Compare commits

...

4873 Commits

Author SHA1 Message Date
Alexey Sedunov
4f411f2abe Introduce Type Parameter
#KT-13155 Fixed
2016-07-26 19:27:45 +03:00
Alexey Sedunov
9de9928837 Introduce Type Alias: Allow adding/removing alias parameters 2016-07-26 19:27:44 +03:00
Alexey Sedunov
88dc0e3b76 Create from Usage: Implement "Create type parameter" quickfix
#KT-11525 Fixed
2016-07-26 19:27:43 +03:00
Alexey Sedunov
82324130be Create from Usage: Implement "Create type alias" quickfix
#KT-12904 Fixed
2016-07-26 19:27:42 +03:00
Alexey Sedunov
0fdcdff24c Quick Fixes: Use simple name in "Change function return type" quickfix 2016-07-26 19:27:41 +03:00
Alexey Sedunov
fbd7f9935f Override/Implement Members: Support "Copy JavaDoc" options for library classes
#KT-12997 Fixed
2016-07-26 19:27:41 +03:00
Alexey Sedunov
38c09653b9 Introduce Variable: Skip leading/trailing comments inside selection
#KT-13054 Fixed
2016-07-26 19:27:40 +03:00
Alexey Sedunov
a77a7696d8 Introduce Variable: Retain entered name after changing "Specify type explicitly" option
#KT-13128 Fixed
2016-07-26 19:27:39 +03:00
Alexey Sedunov
9076fa223a Extract Function: Extract Function: Fix generation of destructuring declarations
#KT-13010 Fixed
2016-07-26 19:27:38 +03:00
Alexey Sedunov
88500aaa73 Extract Function/Parameter/Type Alias: Automatically quote declaration name when necessary
#KT-13157 Fixed
2016-07-26 19:27:37 +03:00
Alexey Sedunov
2faf4b9866 Presentation: Render function signature in RefactoringDescriptionLocation
#KT-12943 Fixed
2016-07-26 19:27:37 +03:00
Alexey Sedunov
0ef2b38b09 Introduce Variable: Do not suggest expressions without type
#KT-12922 Fixed
2016-07-26 19:27:36 +03:00
Alexey Sedunov
7efb895757 Rename: Fix function description in super method warning dialog
#KT-12945 Fixed
2016-07-26 19:27:35 +03:00
Nikolay Krasko
84a83e5dc2 Minor: remove !! 2016-07-26 17:17:06 +03:00
Nikolay Krasko
bdc3192acb Don't store analyze result longer than ModuleResolverProvider valid time
For synthetic files there might be file modifications without PsiModificationTracker.MODIFICATION_COUNT increment.
2016-07-26 17:17:06 +03:00
Nikolay Krasko
db89c3fc3f Refactoring: extract ResolutionFacadeImpl to separate file 2016-07-26 17:17:06 +03:00
Nikolay Krasko
57f3a86686 Debug string for project resolution facade 2016-07-26 17:17:06 +03:00
Nikolay Krasko
3c8e35fa3a Remove psi modification tracker from pooled threads (EA-86038, KT-13163)
IDEA 163 explicitly forbids such tricks with exceptions.

 #KT-13163 Fixed
2016-07-26 17:17:06 +03:00
Michael Bogdanov
9b9abb2e10 Fix for KT-13182: Regression: compiler internal error at inline
#KT-13182 Fixed
2016-07-26 16:16:37 +03:00
Michael Bogdanov
99cdc41ab6 Fix for KT-13133: Incorrect InnerClasses attribute value for anonymous object copied from an inline function
#KT-13133 Fixed
2016-07-26 16:16:36 +03:00
Alexander Udalov
91e486d020 Fix KCallable#name intrinsic for bound references
Do not skip generation of the left-hand side because it may produce side
effects

 #KT-12995 Fixed
2016-07-26 13:48:20 +03:00
Alexander Udalov
0ea885ce58 Move tests on KClass.java* to box/classLiteral/java
Also replace WITH_REFLECT to WITH_RUNTIME to test that these cases correctly
work without reflection in the classpath
2016-07-26 13:48:19 +03:00
Alexander Udalov
70e01fac18 Fix class literals of objects in super constructor calls
In an expression such as "Obj::class" where Obj is an object, it's fine to
consider Obj either an expression or a type and generate either
Obj.INSTANCE.getClass() or Obj.class correspondingly. However,
the former fails in the object's super constructor call because the INSTANCE
field is not yet initialized. Thus, we force generation of Obj.class in case
when Obj is an object.

Note that this has been reproduced in our project, see
KotlinMetadataVersionIndex
2016-07-26 13:47:34 +03:00
Alexander Udalov
495ed13fce Implement codegen for bound class reference expressions
- Inline the usage of ExpressionCodegen#generateClassLiteralReference into
  ClosureCodegen, simplify
- Support DoubleColonLHS.Expression in generateClassLiteralReference
- Substantially simplify KClass.java intrinsic by reusing
  generateClassLiteralReference

 #KT-13075 Fixed
 #KT-12995 In Progress
2016-07-26 13:47:33 +03:00
Alexander Udalov
28dc5d788c Minor, make JavaClassProperty intrinsic a singleton 2016-07-26 13:47:32 +03:00
Nikolay Krasko
a0226f3fd8 Run SafeDeleteFix without run action to avoid "Refactorings should not be started inside write action" (KT-13207)
#KT-13207 Fixed
2016-07-26 13:38:24 +03:00
Nikolay Krasko
6ea5171f60 Add "Studio" as version separator (KT-13184)
#KT-13184 Fixed
2016-07-26 13:38:24 +03:00
Pavel V. Talanov
8a9de2a00f Show all Kotlin annotations when browsing hierarchy of "java.lang.Annotation" 2016-07-26 11:42:09 +03:00
Pavel V. Talanov
84dae76bd9 Index enum classes as if they have "Enum" in supertypes
#KT-13057 Fixed
2016-07-26 11:42:08 +03:00
Pavel V. Talanov
8f006bd4aa Add test for KT-13057 with infrastructure 2016-07-26 11:42:08 +03:00
Alexey Andreev
05dd039151 KT-12275 Add JS optimization that transforms the following code
```
do {
    X
    if (B) break;
} while (A)
```

to

```
do {
    X
} while (!B && A)
```

Add inversion that takes boolean expression and applies negation to it, simplifying if possible (like !!a => a).
2016-07-25 18:46:46 +03:00
Alexey Andreev
b3d29adad9 KT-12275 Add JS optimization that transforms the following code
```
do {
    guard: {
        // do something
        break guard;
        // do something
    }
} while (condition)
```

to

```
do {
    // do something
    continue;
    // do something
} while (condition)
```
2016-07-25 18:32:10 +03:00
Alexey Andreev
1a61115148 KT-12275 Preserve evaluation order when do..while loop with extractable condition contains continue statement 2016-07-25 18:32:08 +03:00
Alexander Udalov
3ef3bb8251 Minor, add comment, remove warning suppression 2016-07-25 15:55:31 +03:00
Alexander Udalov
d945c33d5e Move some members from OverrideResolver to OverridingUtil 2016-07-25 15:55:31 +03:00
Alexander Udalov
aaf618e035 Minor, inline HashSetUtil#symmetricDifference 2016-07-25 15:55:31 +03:00
Alexander Udalov
475fb6e8a7 Simplify OverrideResolver#filterOverrides
- move source vs binary equivalent call filtering hack to
  ResolutionResultsHandler (see c4778bfe5a for
  the original commit introducing this behavior)
- rewrite the algorithm so that it doesn't need noDuplicates in the beginning:
  modulo the hack above whish is only needed in ResolutionResultsHandler,
  descriptor equivalence is checked anyway in OverrideResolver#overrides
2016-07-25 15:55:31 +03:00
Alexander Udalov
a6faab834d Move OverrideResolver#generateOverridesInAClass to CollectionStubMethodGenerator
Also simplify substantially
2016-07-25 15:55:31 +03:00
Alexander Udalov
bbd1e889a6 Use kotlin.Function1 instead of intellij Function in OverrideResolver 2016-07-25 15:55:31 +03:00
Alexander Udalov
191f532675 Remove OverrideResolver#filterOutOverriding, simplify the only usage 2016-07-25 15:55:31 +03:00
Alexander Udalov
5d04fa3c2f Remove unreachable code in ResolutionResultsHandler 2016-07-25 15:55:31 +03:00
Alexander Udalov
89c5799155 Move utilities used in IDE from OverrideResolver to descriptorUtils.kt 2016-07-25 15:55:31 +03:00
Alexander Udalov
24c383a009 Remove unnecessary loop from OverrideResolver#filterOverrides
It was not needed because overridability in both ways is already checked in
DescriptorEquivalenceForOverrides, which is called in
OverrideResolver#overrides
2016-07-25 15:55:31 +03:00
Alexey Tsvetkov
517e457f06 Update changelog 2016-07-25 15:54:39 +03:00
Denis Zharkov
becb1f1f95 Make stack values for assignment-like operations lazy
As well as for other kinds of expressions

Within attached test they were generated twice in case of last expression of coroutine block,
because coroutine related codegen part is built upon assumption that all expressions should be generated lazily

Also add a test about unary postfix increment/decrement

 #KT-13156 Fixed
2016-07-25 13:56:43 +03:00
Alexey Sedunov
0a8490a068 Introduce Type Alias: Suggest initial name based on extracted type 2016-07-25 12:44:30 +03:00
Alexey Sedunov
0769d47f4b Introduce Type Alias: Support type constructor extraction 2016-07-25 12:44:28 +03:00
Alexey Sedunov
b5828a5fa1 Refactoring: Allow multiple ElementKinds when choosing element to refactor 2016-07-25 12:44:26 +03:00
Alexey Sedunov
09d36291de Misc: Update function/type alias signature preview upon changing checkbox state 2016-07-25 12:44:24 +03:00
Mikhail Glukhikh
30b0875b26 Merge pull request #906 from cypressious/make_val_private
Quickfix "Make primary constructor parameter a val" makes the val private now #KT-13187 Fixed
2016-07-25 09:46:42 +03:00
Mikhail Glukhikh
299097d112 KT-10903 Lambda to callable reference: use named arguments if needed, lift restriction about parameter default values
(cherry picked from commit 5232af5)
2016-07-25 09:40:34 +03:00
Dmitry Jemerov
a979c7e1d7 ugly fix for failing tests. without the string template, KotlinFilePathReferenceContributor injects a file reference into the string literal, and an unrelated intention (AddAnnotationIntention) tries to resolve it. resolving the reference caches the default contexts in FIleReferenceSet, which caches the order entries of a module in an OrderRootsCache. this creates VirtualFilePointers which are for some reason not disposed properly. 2016-07-23 21:18:26 +02:00
Kirill Rakhman
ce80f94830 Quickfix "Make primary constructor parameter a val" makes the val private now
Fixes #KT-13187
2016-07-23 14:32:25 +02:00
Yoshinori Isogai
8aaf28e240 KT-12887 Extend selection should select call's invoked expression (#904)
#KT-12887 fixed
2016-07-22 21:23:42 +03:00
Alexander Udalov
83000c50ff Remove quotes around visibility in invisible member diagnostic 2016-07-22 18:13:41 +03:00
Alexander Udalov
b6b2303aa7 Improve error message for inaccessible invisible_fake members
#KT-8989 Fixed
2016-07-22 18:13:40 +03:00
Alexander Udalov
a92f0a0446 Do not report "reflection is not available" on built-in sources 2016-07-22 18:13:39 +03:00
Alexander Udalov
9be219b69c Check presence of dispatch receiver parameter in modifier checks
Also fix typo in "inapplicable infix" diagnostic message
2016-07-22 18:13:39 +03:00
Alexander Udalov
2a390155a9 Fix quotes in diagnostic messages
See 8316953259
2016-07-22 18:13:38 +03:00
Kirill Rakhman
5948b69679 AddConstModifierIntention: handle more edge cases #KT-13173 Fixed
(cherry picked from commit 4755596)
2016-07-22 18:07:14 +03:00
Nikolay Krasko
adbb07f30b Do not fail on adding sources to libraries that can't be recognized (EA-73238)
It's valid situation when user in Gradle project had created ordinal Java module and wants to configure
it with Kotlin. We should add Gradle library to dependency but there's no need to configure sources for it.
2016-07-22 15:21:27 +03:00
Nikolay Krasko
0f4319de8e Minor: fix warning 2016-07-22 15:21:27 +03:00
Nikolay Krasko
95d0604339 Evaluate getting text under read action (EA-82155, EA-82587) 2016-07-22 15:21:27 +03:00
Nikolay Krasko
3d0cfdf585 Don't fail if there's no modules in combobox with unconfigured modules (EA-76203)
Confirmed reproduction steps:
1. Open Kotlin gradle project (or do the sync) - it will be considered unconfigured until synchronisation is finished
2. Click configure and see Choose Configuration popup
3. Wait sync is finished
4. Click proposed configurator in popup

As all projects are considered configured now, single module selection will be empty
2016-07-22 15:21:27 +03:00
Alexander Udalov
0dd71cc0c0 Minor, add test on bound reference to enum entry member 2016-07-22 11:05:19 +03:00
Alexander Udalov
9ab8da2ef9 Fix type of reference to protected var
#KT-12982 Fixed
2016-07-22 11:05:19 +03:00
Alexander Udalov
6baf3ae737 Minor, inline LexicalScope.Companion.empty 2016-07-22 11:05:19 +03:00
Alexander Udalov
969ff43152 Merge CallableReferencesResolutionUtils.kt into DoubleColonExpressionResolver 2016-07-22 11:05:19 +03:00
Alexander Udalov
2fcd4e955a Simplify code in callable reference resolution 2016-07-22 11:05:19 +03:00
Alexander Udalov
00f1415ed7 Fix "rewrite at slice LEXICAL_SCOPE" during callable reference resolution
Following the TODO in CallableReferencesResolutionUtils.kt, delete the
suspicious scope and use the new resolution process with the qualifier which
was obtained after the resolution of LHS. However, by default the tower
resolution algorithm also considers each qualifier as a class value as well,
which would be wrong here because resolution of LHS as a "value" happens
earlier in DoubleColonExpressionResolver and with slightly different rules. To
avoid that, do not mix in the "explicit receiver" scope tower processor when
creating processors for callable reference resolution.

Also delete unused functions and classes related to deleted scope, refactor
Scopes.kt

 #KT-8596 Fixed
2016-07-22 11:05:19 +03:00
Alexander Udalov
7b59864ed9 Refine double colon LHS resolution if expression is an object 2016-07-22 11:05:19 +03:00
Alexander Udalov
5a6237b357 Refactor resolution of double colon expression LHS
Try resolving the LHS only when it looks (PSI-wise) like it could represent a
type element. This, for example, allows "illegal selector" error to be reported
on weird expressions like '""?.""::class'.

Also remove expression text from the "illegal selector" diagnostic, it's not
needed and can screw up the error message if the text is too big
2016-07-22 11:05:19 +03:00
Mikhail Glukhikh
5a2f34b351 Deduct x != null from x?.y is NotNullType 2016-07-21 21:15:34 +03:00
Mikhail Glukhikh
90c6868f9b renderDataFlowValue() moved to test from completion 2016-07-21 21:15:31 +03:00
Mikhail Glukhikh
edeef90c4b Minor improvements in DataFlowValue / IdentifierInfo 2016-07-21 21:15:27 +03:00
Mikhail Glukhikh
11f50186fa x?.y != null and x?.call() != null provoke now x != null, a set of tests #KT-2127 Fixed 2016-07-21 21:15:19 +03:00
Mikhail Glukhikh
9001b9bcc0 DataFlowValue & DataFlowValueFactory major refactoring, get rid of DataFlowValue.id : Any?
Instead, DataFlowValue now requires IdentifierInfo implementation to be created
DataFlowValue is compared using IdentifierInfo
2016-07-21 21:15:05 +03:00
Mikhail Glukhikh
7f9b9ddb45 DataFlowValueFactory: converted to Kotlin 2016-07-21 20:19:44 +03:00
Mikhail Glukhikh
b1a2a0723c DataFlowValueFactory.java --> DataFlowValueFactory.kt 2016-07-21 20:19:41 +03:00
Mikhail Glukhikh
17a2a971c4 A pair of "Suppress" changed from CAST_NEVER_SUCCEEDS to UNCHECKED_CAST
(cherry picked from commit 2ac8a66)
2016-07-21 20:16:15 +03:00
Mikhail Glukhikh
dbbc4ec281 Array<Subtype> can be now cast to Array<Supertype(?)> without CAST_NEVER_SUCCEEDS #KT-6391 Fixed
(cherry picked from commit 2629d55)
2016-07-21 20:16:06 +03:00
Mikhail Glukhikh
90e5e561e3 KT-6391: Arrays with same erased types counted as cast-compatible now
(cherry picked from commit 9e6f4bf)
2016-07-21 20:15:55 +03:00
Mikhail Glukhikh
82e69d9587 Remove setter parameter type inspection #KT-5771 Fixed
(cherry picked from commit 731a670)
2016-07-21 20:15:44 +03:00
Michael Bogdanov
1d5924d236 'superConstructorCall' test folder moved under 'innerNested' 2016-07-21 19:10:42 +03:00
Michael Bogdanov
55382ba848 Removed obsolete code in 'lookupConstructorExpressionsInClosureIfPresent' method 2016-07-21 19:10:42 +03:00
Michael Bogdanov
5dca4dbc67 Fix for KT-11833: Error generating constructors of class null with kind IMPLEMENTATION on anonymous object inheriting from nested class of super class
#KT-11833 Fixed
2016-07-21 19:10:42 +03:00
Stanislav Erokhin
6556cde329 Introduce new type checker. 2016-07-21 16:07:16 +03:00
Stanislav Erokhin
d4d98c87ee Minor. fixed equals for TypeProjection.
Note: unclear where this equals is used.
2016-07-21 16:07:15 +03:00
Stanislav Erokhin
663752f086 Create error supertype instead of non-checked supertypes to avoid cyclic hierarchy in subtyping. 2016-07-21 16:07:15 +03:00
Stanislav Erokhin
ebe9e6db37 Type constructors with different counts of type parameters are not equal from now. 2016-07-21 16:07:14 +03:00
Stanislav Erokhin
8193032ffb Refactoring. Separate KotlinTypeChecker to interface & Impl class. 2016-07-21 16:07:14 +03:00
Alexander Udalov
2c08796c45 Report ABI version incompatibility error always, not only if there are other errors
This is a radical but likely temporary measure to forbid the current compiler
from compiling code against binaries compiled by newer compilers

Cherry picked from commit 149a4eddff and commit
285b20e3ff
2016-07-21 15:03:52 +03:00
Alexey Tsvetkov
ddc9369299 Update changelog for 1.0.4 2016-07-21 15:02:10 +03:00
Alexey Tsvetkov
5e4724a3b5 Update changelog for 1.0.4 2016-07-20 22:44:13 +03:00
Alexey Sedunov
e232905614 Fix compilation 2016-07-20 17:01:07 +03:00
Michael Bogdanov
6da97027cc 'getSuperCallLabelTarget' refactoring 2016-07-20 16:50:50 +03:00
Michael Bogdanov
6f41e3b462 Fix for KT-11634: UOE in ConstructorContext.getOuterExpression for super call in delegation
#KT-11634 Fixed
2016-07-20 16:50:49 +03:00
Alexey Sedunov
ae06f01c95 Create from Usage: Approximate unresolvable types
#KT-7722 Fixed
(cherry picked from commit 917cd22)
2016-07-20 16:36:12 +03:00
Alexey Sedunov
a1e86e8bfa Create from Usage: Show target class name in the text of "Create member" quick fix
(cherry picked from commit a51d3fc)
2016-07-20 15:39:19 +03:00
Alexey Sedunov
82bdd1e42b Minor: Convert CallablePlacement to sealed class
(cherry picked from commit 47073b5)
2016-07-20 15:39:16 +03:00
Alexey Sedunov
e1f58c554d Rename: Fix exception on property rename preview
(cherry picked from commit 7b54ad0)
2016-07-20 15:39:15 +03:00
Alexey Sedunov
1a13c21377 Create from Usage: Show receiver type in the text of "Create extension" quick fix
(cherry picked from commit c0d5df1)
2016-07-20 15:39:13 +03:00
Alexey Sedunov
79f73d3cc2 Minor: Fix compilation
(cherry picked from commit 5397e11)
2016-07-20 15:39:11 +03:00
Alexey Sedunov
2abcd17713 Create from Usage: Support "Create member/extension" corresponding to the extension receiver of enclosing function
#KT-10668 Fixed
(cherry picked from commit bc4c013)
2016-07-20 15:39:09 +03:00
Alexey Sedunov
49b6811b44 Create from Usage: Support "Create abstract function/property" inside an abstract class
#KT-7492 Fixed
(cherry picked from commit 75f6b7f)
2016-07-20 15:39:07 +03:00
Alexey Sedunov
3ba776fffa Code Insight: Format generated declarations
#KT-11176 Fixed
(cherry picked from commit 3641ad6)
2016-07-20 15:39:05 +03:00
Alexey Sedunov
a33f946c14 Override/Implement Members: Implement Members: Fix base member detection when abstract and non-abstract members with matching signatures are inherited from an interface
#KT-11115 Fixed
(cherry picked from commit a3a2e57)
2016-07-20 15:39:01 +03:00
Alexey Sedunov
dd7bd2b869 Inline Property: Support "Do not show this dialog" and "Inline this occurrence" options
#KT-12017 Fixed
(cherry picked from commit b53d8da)
2016-07-20 15:30:14 +03:00
Alexey Sedunov
59f37a8291 Introduce Property: Do not skip outer classes if extractable expression is contained in object literal. Skip outer classes of non-inner class
#KT-12084 Fixed
(cherry picked from commit 2852f44)
2016-07-20 15:30:12 +03:00
Alexey Sedunov
00ad37b769 Introduce Property: Fix extraction of expressions referring to primary constructor parameters
#KT-12294 Fixed
(cherry picked from commit 78212a4)
2016-07-20 15:30:10 +03:00
Alexey Sedunov
c075d27731 Change Signature: Consider default value context an initial type context. Use parameter list as a type context for bodyless function
#KT-12413 Fixed
(cherry picked from commit f417b05)
2016-07-20 15:30:09 +03:00
Alexey Sedunov
57bc0d6734 Change Signature: Consider super call a by-name propagation site if either its class, or its primary constructor is a propagation target.
This fixes testJavaConstructorParameterPropagation test flickering
2016-07-20 15:30:07 +03:00
Alexey Sedunov
130e4fb745 Introduce Type Alias
#KT-12902 Fixed
2016-07-20 11:46:59 +03:00
Alexey Sedunov
ce0e5b4b46 Convert to Kotlin: AbstractParameterTablePanel.java 2016-07-20 11:46:58 +03:00
Alexey Sedunov
27773fbe99 Convert to Kotlin: AbstractParameterTablePanel.java (rename to .kt) 2016-07-20 11:46:57 +03:00
Alexey Sedunov
3d49b27269 Convert to Kotlin: ExtractFunctionParameterTablePanel.java 2016-07-20 11:46:57 +03:00
Alexey Sedunov
abe7b8c513 Convert to Kotlin: ExtractFunctionParameterTablePanel.java (rename to .kt) 2016-07-20 11:46:56 +03:00
Alexey Sedunov
6b0968c939 Refactoring: Extract AbstractParameterTablePanel class 2016-07-20 11:46:55 +03:00
Alexey Sedunov
9e339c12e9 Minor: Move and rename KotlinFunctionSignatureComponent 2016-07-20 11:46:54 +03:00
Alexey Sedunov
301f86cc96 Refactoring: Extend expression selection utilities to support KtTypeElement 2016-07-20 11:46:54 +03:00
Dmitry Jemerov
ef0318e038 more testdata updates due to default function template change 2016-07-20 10:44:54 +02:00
Valentin Kipyatkov
cc6b1faddd Minor 2016-07-19 20:35:31 +03:00
Valentin Kipyatkov
cd5ffa5895 "class" and "class.java" should be available after expression too 2016-07-19 20:35:31 +03:00
Valentin Kipyatkov
a25841e9c7 Smart completion for bound callable references 2016-07-19 20:35:31 +03:00
Valentin Kipyatkov
e05aa41bbc Completion and import popup for bound callable references 2016-07-19 20:35:31 +03:00
Dmitry Jemerov
079d857aa2 update testdata for https://github.com/JetBrains/kotlin/pull/896/ 2016-07-19 17:58:09 +02:00
Natalia Ukhorskaya
3cbe28095b Debugger: check that label for marked object is a valid java identifier (KT-12651)
#KT-12651 Fixed
2016-07-19 17:52:55 +03:00
Nikolay Krasko
5ea74ed562 Remove call invokeAndWait() under read lock in debugger (KT-13037)
Call to invokeAndWait() in dispatch thread or in situation when read lock isn't held left untouched. Can't remove invokeAndWait() completely because without the
progress bar idea looks to be stacked on debugger start because of long search for inline functions usages (searching for breakpoints places).

 #KT-13037 Fixed
2016-07-19 17:52:55 +03:00
Laszlo Hornyak
fafbbf697d new function body changed to call the shorter TODO() function (#896)
Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
2016-07-19 17:09:05 +03:00
Alexey Sedunov
ccfca0e3dd Inline Type Alias
#KT-12903 Fixed
2016-07-19 15:44:35 +03:00
Alexey Sedunov
7773a1c4e0 Inline Variable/Property: Move test data 2016-07-19 15:42:15 +03:00
Mikhail Glukhikh
8bdc88f763 Grammar: obsolete 'annotationEntry' changed to 'unescapedAnnotation' in a few places
(cherry picked from commit d9818bd)
2016-07-19 15:09:17 +03:00
Mikhail Glukhikh
75832f9d80 Grammar: obsolete 'package' element removed #KT-8429 Fixed
(cherry picked from commit 7bdf556)
2016-07-19 15:09:08 +03:00
Mikhail Glukhikh
23ae042154 A set of soft modifiers added to grammar #KT-13143 Fixed
(cherry picked from commit 904a18c)
2016-07-19 15:08:58 +03:00
Dmitry Jemerov
3ad6daea6c fix muted test KotlinFindUsagesWithLibraryTestGenerated$KotlinLibrary.testLibraryCompanionObjectUsages 2016-07-19 13:25:58 +02:00
Dmitry Jemerov
dc0020b666 in REPL tests, wait for process destroyed handler to fire after destroying process and before performing the rest of dispose 2016-07-19 13:24:56 +02:00
Dmitry Jemerov
30f00bb618 fix muted test MultiFileIntentionTestGenerated.testImplementAbstractMember_implementVarInJava_ImplementAllInJava: apply intention in deterministic order, remove trailing space in expected output file 2016-07-19 11:17:48 +02:00
Dmitry Jemerov
9100ca8837 fix testdata for muted test IntentionTestGenerated$ReplaceItWithExplicitFunctionLiteralParam.testApplicable_nestedFunctionWithIt 2016-07-19 11:17:03 +02:00
Mikhail Glukhikh
785d04708a Merge pull request #899 from cypressious/wrong_long_suffix
Implement quickfix for wrong long suffix
2016-07-19 09:46:51 +03:00
Kirill
b9d235dec8 Implement quickfix for wrong long suffix
Fixes: KT-13134
2016-07-18 22:49:22 +02:00
Alexey Andreev
df05b20bc6 JS: in tests add verifier that checks whether no expression statements with only null expression exist 2016-07-18 19:26:50 +03:00
Alexey Andreev
a27f5c8fee JS: add TranslationContext.cacheExpressionIfNeeded and use it where possible 2016-07-18 19:26:50 +03:00
Alexey Andreev
b5f9287bfa JS: add tests for support of 'for' statement in TemporaryAssignmentElimination 2016-07-18 19:26:49 +03:00
Alexey Andreev
f8b96a1c62 JS: add tests to prove that KT-8003, KT-8318 and KT-12157 are no longer reproducible 2016-07-18 19:26:49 +03:00
Alexey Andreev
9cb6b22d62 JS: minor code style and formatting fixes 2016-07-18 19:26:48 +03:00
Alexey Andreev
9fcad45edb JS: refactor generation of temporary variables 2016-07-18 19:26:48 +03:00
Alexey Andreev
9edb9fabe5 JS: get rid of JsEmptyExpression, use JsLiteral.NULL instead, rely on optimizer to remove redundant code 2016-07-18 19:26:47 +03:00
Alexey Andreev
fe5a7aaf46 JS: during translation of expression mark assignment to temporary variables as synthetic statement.
This helps optimizer to find and eliminate temporary variables.
2016-07-18 19:26:47 +03:00
Dmitry Jemerov
82babaff7e to reduce VM contention between JVM with tests and JVM with Ant, run Ant with -Xmx128m 2016-07-18 16:56:46 +02:00
Dmitry Jemerov
5224ad7ff2 to ensure that JNA uses the DLL version from the jar and not an incompatible version that happens to be available on the machine running the tests, run tests with -Djna.nosys option 2016-07-18 16:54:39 +02:00
Dmitry Jemerov
b315a07f0d delete work dir after each JPS test 2016-07-18 16:52:16 +02:00
Mikhail Glukhikh
9df96bdd26 KotlinJUnitStaticEntryPoint.wasSelected made public field #KT-13114 Fixed
(cherry picked from commit 5cafae5)
2016-07-18 17:10:41 +03:00
Mikhail Glukhikh
a3b52fd8a6 Lambda to callable reference: inspection is optional depending on text length
(cherry picked from commit ce0c43c)
2016-07-18 17:10:31 +03:00
Mikhail Glukhikh
220141ab2b Convert lambda to callable reference intention / inspection #KT-10903 Fixed
(cherry picked from commit b620099)
2016-07-18 17:10:15 +03:00
Denis Zharkov
b5bdb070a0 Fix test data after 4725dd3 2016-07-16 09:10:35 +03:00
Denis Zharkov
3b0131fd04 Fix ConvertTextJavaCopyPasteProcessor after 4725dd3
In cases like 'fun foo() = \n fun dummy(){}'
declaration on the next line is parsed as top-level declaration.

But ConvertTextJavaCopyPasteProcessor expects that 'fun dummy(){}'
would be a part of an expression body, so we replace "\n" with " "
to turn off recovery in the case

See TextJavaToKotlinCopyPasteConversionTestGenerated.testAsExpressionBody
2016-07-16 09:10:00 +03:00
Denis Zharkov
2f2b1a7f80 Minor. Drop unused method 2016-07-15 18:59:33 +03:00
Denis Zharkov
4725dd3028 Implement recovery for incomplete expression before declaration
It's needed when declarations are parsed as a part of previous expression
(see tests)

Currently we apply this kind of recovery in a conservative way,
only when declaration starts at the next line, and while
the condition could be relaxed, there's no need to do this

 #KT-4948 Fixed
 #KT-7118 Fixed
2016-07-15 18:59:31 +03:00
Denis Zharkov
06a659e6e7 Minor. Invert boolean parameter meaning
It looks much more sensible to me
2016-07-15 18:27:01 +03:00
Denis Zharkov
fcb870a303 Add EOL to EXPRESSION_FOLLOW recovery set
This change is used in further commits, but it's extracted
to emphasize that testData modifications are caused by this.
2016-07-15 18:27:00 +03:00
Dmitry Jemerov
e224041760 show line markers for properties defined in the primary constructor (KT-12626) 2016-07-14 23:32:07 +02:00
Dmitry Jemerov
4391d833b9 do not reenter indices to avoid deadlock
#KT-12718 Fixed
2016-07-14 23:32:05 +02:00
Dmitry Jemerov
5380b63522 don't consider calls to methods with the same name as a property to be calls to accessors of that property
#KT-12813 Fixed
2016-07-14 23:32:04 +02:00
Dmitry Jemerov
14037f099c correctly find usages of overridden Java method through synthetic accessors
#KT-12869 Fixed
2016-07-14 23:32:02 +02:00
Alexey Andreev
e2b836db09 JS: refactor TemporaryVariableElimination 2016-07-14 18:00:34 +03:00
Alexey Tsvetkov
941437a9a2 Correct test case for KT-12776
After minifying test, it stopped failing without fix
2016-07-14 16:48:30 +03:00
Alexey Tsvetkov
58e13ddf54 Do not force dependency resolution when configuring kapt with stabs
#KT-12776 fixed
2016-07-14 16:15:19 +03:00
Ilya Gorbunov
a66fc90434 Minor: exclude directory with the generated stdlib documentation 2016-07-13 20:40:01 +03:00
Ilya Gorbunov
d55b2cd00d Docs: include JRE7/8-specific sources into the documentation. 2016-07-13 20:39:59 +03:00
Ilya Gorbunov
e9ccc480b0 Docs: improve docs for Closeable.use and AutoCloseable.use 2016-07-13 20:39:54 +03:00
Dmitry Jemerov
b09fc7c146 Kotlin JUnit run configuration producer needs to take precedence over IDEA's PatternConfigurationProducer
#KT-13084 Fixed
2016-07-13 15:48:21 +02:00
Dmitry Jemerov
e66e292052 add alternate path to common.jar dependency to work around the fact that it's no longer shipped in plugins/android/lib since AS 2.2 preview 2016-07-13 13:41:05 +02:00
Dmitry Jemerov
5201fc171b ClsWrapperStubPsiFactory can be a singleton 2016-07-13 13:16:15 +02:00
Alexander Udalov
87387d030f Minor, fix yellow code in OverrideResolver and OverridingUtil 2016-07-13 13:42:46 +03:00
Alexander Udalov
8f33830f29 Suppress UNCHECKED_CAST instead of CAST_NEVER_SUCCEEDS in several places
This is related to KT-6611 being fixed recently. Note that not all cases of
incorrect "cast never succeeds" were fixed
2016-07-13 13:42:42 +03:00
Alexander Udalov
13b0fda3c2 Fix AssertionError in DescriptorResolver#checkBounds
#KT-9620 Fixed
2016-07-13 13:42:39 +03:00
Denis Zharkov
b777b081b7 Increase SOURCE_STUB_VERSION and BINARY_STUB_VERSION in 1.1 on 50
Mostly because of type aliases and coroutines related changes

The reason why not just +1 is to avoid clashes between 1.0.x and 1.1
in cases when version must be increased in both branches
2016-07-13 13:19:11 +03:00
Denis Zharkov
bef7d5da2f Increase SOURCE_STUB_VERSION
It's necessary because of changes in parser
(mostly recovery f1026935a0)
2016-07-13 13:14:57 +03:00
shiraji
113ab7640e Implement inspection to remove @ from annotation argument #KT-9228 Fixed
(cherry picked from commit 543c6bc)
2016-07-13 13:11:43 +03:00
Dmitry Jemerov
c80e094967 specify FQ names for collection types as well 2016-07-12 17:34:09 +02:00
Denis Zharkov
d88fc864e4 Revert "Use weak-reference based SLRU cache for module resolvers"
This reverts commit 28e33aaf56.

Reverting is necessary because this change leads to complicated
exceptions, while it's usefulness is not that obvious.

 #EA-82372 Fixed
2016-07-12 17:54:49 +03:00
Mikhail Glukhikh
39ffb68cc6 KT-12942 related: remove braces now does not work for if inside if
(cherry picked from commit c1faed5)
2016-07-12 17:27:19 +03:00
Mikhail Glukhikh
3fe114fc24 When to if now add braces for if branches inside #KT-12942 Fixed
(cherry picked from commit 29a7bfe)
2016-07-12 17:27:03 +03:00
Mikhail Glukhikh
b675b49daf Specify type explicitly: do not consider star projection arguments in KotlinType.isFlexibleRecursive() #KT-13055 Fixed
(cherry picked from commit 828f4bf)
2016-07-12 17:26:50 +03:00
Mikhail Glukhikh
51ccfc120e Can be primary constructor property: check whether property belongs to the same class #KT-12876 Fixed
(cherry picked from commit eb05a7a)
2016-07-12 17:26:39 +03:00
Dmitry Jemerov
e492d23d58 more sensible docs for @MustBeDocumented 2016-07-12 16:23:58 +02:00
Dmitry Jemerov
ccbc19f7e9 fix qualified links in Module.md
#KT-11373 Fixed
2016-07-12 16:23:58 +02:00
Denis Zharkov
3845ea863c Do not generate DefaultImpl method for MutableMap.remove(K;V)Z
#KT-13069 Fixed
2016-07-12 16:27:48 +03:00
Denis Zharkov
2d42ba23b3 Minor. Replace TraitImpl -> DefaultImpls, Trait -> Interface
There are still a lot of trait word entries in the source code,
only some of them got replaced here
2016-07-12 16:27:48 +03:00
Nikolay Krasko
57ef3f5656 Generate linenumber for goto instruction in while (KT-13059)
Otherwise linenumber for previous instruction will be used in debugger. That can lead to error stepping
because it might be line that isn't reachable on current iteration.

 #KT-13059 Fixed
2016-07-12 15:19:02 +03:00
Nikolay Krasko
ce74d6c7df Refactoring: invert if 2016-07-12 15:19:00 +03:00
Ilya Chernikov
ee2c5c1b73 minor: Make script dependencies classpath processing more robust 2016-07-12 13:21:11 +02:00
Denis Zharkov
9fd78ac1ff Temporary disable reflection test on Android 2016-07-12 12:52:03 +03:00
Denis Zharkov
18c2d3070d Refine variables liveness analysis
Do not treat var as alive just because current instruction belongs to an item range
in local variables table, but the item has different sort of type

As liveness analysis is mostly used in coroutines spilling,
not applying this change may lead that to problems on Android (see tests)
2016-07-12 12:52:03 +03:00
Nikolay Krasko
434a84eab6 Disable local mirrors for public teamcity 2016-07-12 12:16:39 +03:00
Nikolay Krasko
6b10a9d94e Tests for Gradle inspections with configured Gradle project 2016-07-12 12:16:38 +03:00
Nikolay Krasko
585c8eea0b Warn about using different versions of Kotlin plugin and standard library in Gradle (KT-12730)
#KT-12730 Fixed
2016-07-12 12:16:35 +03:00
Nikolay Krasko
5246b8a926 Fix getting external path for retrieving gradle model 2016-07-12 12:14:25 +03:00
Nikolay Krasko
9b1eb0931f Refactoring: extract method for getting Kotlin plugin version and remove findAllRecursively usage 2016-07-12 12:14:24 +03:00
Nikolay Krasko
8852c8812b Use internalName for compare with module name 2016-07-12 12:14:23 +03:00
Pavel V. Talanov
ae5659538b Increase BINARY_STUB_VERSION
Should have been done after earlier changes: 022ef6410d
2016-07-11 19:07:19 +03:00
Pavel V. Talanov
254ab72eb5 Put all stub versions into one place, explain their meaning 2016-07-11 19:07:16 +03:00
Pavel V. Talanov
00afc1dbf2 update ChangeLog for 1.0.3 2016-07-11 19:07:14 +03:00
Nikolay Krasko
0b5786b9e8 Fix LocalVarShadowingMemberProperty test by renaming test files 2016-07-11 13:52:37 +03:00
Nikolay Krasko
b0226fd91c Fix bad refactoring 2016-07-11 13:52:15 +03:00
Nikolay Krasko
74877d2fa9 Minor: add some comments after review 2016-07-11 13:52:14 +03:00
Nikolay Krasko
6fbcb6448d Support multi-module environment in DifferentKotlinGradleVersionInspection 2016-07-11 13:52:13 +03:00
Nikolay Krasko
e6c05aa92d Make DifferentKotlinGradleVersionInspection inpection work for classpath call with braces 2016-07-11 13:52:12 +03:00
Nikolay Krasko
b04ed12ee1 Update description in DifferentKotlinMavenVersionInspection 2016-07-11 13:52:11 +03:00
Nikolay Krasko
feea1f554a Refactoring: extract strings 2016-07-11 13:52:11 +03:00
Nikolay Krasko
8acb96fb4d Fallback to properly resolved version if heuristic doesn't work in DifferentKotlinGradleVersionInspection 2016-07-11 13:52:10 +03:00
Nikolay Krasko
620ddcd63a Add inspection that warns if Gradle plugin version differs from the one in IDE (KT-12730)
#KT-12730 Fixed
2016-07-11 13:52:06 +03:00
Denis Zharkov
7a9af072b4 Fix ClassCastException when data object is being analyzed
#KT-12687 Fixed
2016-07-10 15:04:32 +03:00
Michael Bogdanov
23a0e19620 Fix for KT-13040: Invalid bytecode generated for extension lambda invocation with safe call
#KT-13040 Fixed
2016-07-09 14:55:49 +03:00
Michael Bogdanov
93f6761671 Print bytecode on linenumber test fail 2016-07-09 07:45:57 +03:00
Michael Bogdanov
486aa5675f Fix for KT-12908: Variable initialization in loop causes VerifyError bad local variable type
#KT-12908 Fixed
2016-07-09 07:45:57 +03:00
Dmitry Jemerov
00d651711a fix incompatibility with ASM 6: don't call getReturnType() on a type which is not a method type (IDEA-158090) 2016-07-08 17:17:45 +02:00
Denis Zharkov
3aa1a56cb9 Extend recovery set when expecting property accessor
#KT-12987 Fixed
2016-07-08 16:06:47 +03:00
Denis Zharkov
f1026935a0 Add recovery for properties without name
If property name is parsed on the next line and declaration is invalid
(no receiver/type/initializer), treat that name as it does not belong to property

 #KT-12987 In Progress
2016-07-08 16:06:47 +03:00
Denis Zharkov
141db1809f Minor. Drop redundant AnnotationParsingMode 2016-07-08 16:06:47 +03:00
Denis Zharkov
36a7f31358 Minor. Extract parsePropertyDelegateOrAssignment 2016-07-08 16:06:47 +03:00
Denis Zharkov
4981b730ef Minor. Cleanup KotlinParsing
- Remove unused field and commented code
- Add some comments
- jet -> kotlin
2016-07-08 16:06:47 +03:00
Denis Zharkov
bed6e312ae Minor. Drop unreachable conditional branch
- allowShortAnnotations is true only for IN_ANNOTATION_LIST
- when starting parsing of annotation list we can't come to modifier list
(see the only usage of IN_ANNOTATION_LIST)
2016-07-08 16:06:47 +03:00
Denis Zharkov
46f11a5ec4 Add val/var tokens in parameter name recovery set
Recovery after val/var everywhere beside value parameters works
properly without this change

 #KT-7915 Fixed
2016-07-08 16:06:47 +03:00
Dmitry Petrov
b0edec8449 KT-13023 Char operations throw ClassCastException for boxed Chars
Char is not a Number, so we can't use the same coercion strategy for Char members,
since it doesn't work for boxed Chars.
2016-07-08 10:26:04 +03:00
Dmitry Petrov
2ccb0caa6c Minor: fix NPE in CallableMethod.toString for methods of primitive types 2016-07-08 10:26:04 +03:00
Dmitry Jemerov
dec2f982ee add test for resolving links to library classes from KDoc comments 2016-07-07 19:28:59 +02:00
Dmitry Jemerov
80e10c6928 use navigation element to resolve KDoc links, so that we have correct context when resolving links in the documentation of library elements
#KT-10654 Fixed
2016-07-07 19:28:31 +02:00
Dmitry Jemerov
fac1b85d26 use a better API for locating target element when navigating by documentation link, to ensure we find the source for descriptors belonging to library classes
#KT-12932 Fixed
2016-07-07 19:27:53 +02:00
Dmitry Jemerov
88fe6680fa use QualifiedNameResolver for resolving links in KDoc
#KT-10398 Fixed
2016-07-07 19:27:45 +02:00
Dmitry Jemerov
60523fb93f avoid NPE when trying to create a file that already exists
#KT-12655 FIxed
2016-07-07 18:01:43 +02:00
Dmitry Jemerov
972ebd5fec check that main() returns Unit
#KT-12760 Fixed
2016-07-07 18:01:42 +02:00
Dmitry Jemerov
30d721c458 MainFunctionDetector: cleanup after J2K 2016-07-07 18:01:41 +02:00
Dmitry Jemerov
b58c659e46 MainFunctionDetector: J2K 2016-07-07 18:01:40 +02:00
Dmitry Jemerov
b9a9f2504d MainFunctionDetector: rename to .kt 2016-07-07 18:01:40 +02:00
Dmitry Jemerov
193a404c07 to restore pre-1.0.3 highlighting behavior, inherit "extension function" and "extension property" colors from "static method" and "static field"
#KT-12937 Fixed
2016-07-07 18:01:39 +02:00
Dmitry Jemerov
216d548e98 fix rendering of code blocks escaped with multiple backticks or containing backslashes
#KT-12998 Fixed
 #KT-12999 Fixed
2016-07-07 18:01:38 +02:00
Dmitry Jemerov
801a128547 don't lose ! when rendering markdown
#KT-13000 Fixed
2016-07-07 18:01:37 +02:00
Alexey Tsvetkov
621ffca194 Do not run integration tests with old gradle versions
Reason finalizedBy is not supported with gradle < 2.0
2016-07-07 15:42:01 +03:00
Alexander Udalov
720c29e8f4 Minor, fix NonExistentClass name and format 2016-07-07 13:56:01 +03:00
Alexander Udalov
ceb54492e6 Get rid of CallChecker#checkPropertyCall, create fake ResolvedCall 2016-07-07 13:55:48 +03:00
Dmitry Jemerov
623673c3df fix ASM 5 src download URL (file was removed in IDEA commit ed9c9fc) 2016-07-07 12:49:00 +02:00
Nikolay Krasko
54da3e73c0 Add description for Kotlin gradle plugin 2016-07-07 02:54:38 +03:00
Nikolay Krasko
c051bd2d2c Refactoring: better name for SameVersionInspection
It now has better suppression string
2016-07-07 02:54:37 +03:00
Nikolay Krasko
8450921b58 Refactoring: rename SameVersionIDEPluginInspection
It now has better suppression string
2016-07-07 02:54:36 +03:00
Nikolay Krasko
16b8f3fd57 Show versions that are reported different in SameVersionIDEPluginInspection 2016-07-07 02:54:28 +03:00
Nikolay Krasko
5cfebe4120 Avoid "loader constraint violation: when resolving method "ActionsKt.runReadAction()" 2016-07-07 02:51:26 +03:00
Nikolay Krasko
9f0e8ca6b0 Read test files with \r removed on Windows 2016-07-07 02:51:26 +03:00
Nikolay Krasko
2783c9bde2 Fix AbstractAnnotationProcessorBoxTest on Windows: load text without \r 2016-07-07 02:51:25 +03:00
Nikolay Krasko
dcfb5f1554 Minor: mark folder as resources not a source root 2016-07-07 02:51:24 +03:00
Alexey Tsvetkov
03b4eba4ef Remove dependency on Files from guava 2016-07-06 16:39:08 +03:00
Alexey Tsvetkov
16b1616ebc Gradle: copy kotlin classes after java compilation
#KT-9392 fixed
    #KT-12295 fixed
    #KT-12736 fixed
2016-07-06 16:38:48 +03:00
Denis Zharkov
3a59e1d222 Support suspending extension functions 2016-07-06 15:25:19 +03:00
Denis Zharkov
2cc09f928e Allow suspend extensions for specially annotated controllers 2016-07-06 15:25:19 +03:00
Denis Zharkov
30b4dfa65d Minor. Make extension's receiver to be a type parameter and simplify usage 2016-07-06 15:25:19 +03:00
Dmitry Petrov
3445fe0d30 KT-12985 Do not create range instances for 'for' loop in CharSequence.indices 2016-07-06 12:50:41 +03:00
Dmitry Petrov
3dc23a0e02 KT-12983 java.lang.VerifyError: Bad type on operand stack in arraylength
Use proper receiver value type.
2016-07-06 09:59:00 +03:00
Michael Bogdanov
6b8e8cee17 Fix for KT-12891: Allow to omit type in local delegated property declaration
#KT-12891 Fixed
2016-07-05 21:22:48 +03:00
Alexander Udalov
191dfa1f2b Minor, add test that language feature settings are used in local analysis
This test checks that the correct LanguageFeatureSettings instance (not
LanguageVersion.LATEST) is being passed to
createContainerForLazyLocalClassifierAnalyzer
2016-07-05 19:54:16 +03:00
Alexander Udalov
b557f9e712 Fix typo in inline property diagnostic message 2016-07-05 19:25:24 +03:00
Alexander Udalov
d331b6ae8e Minor, move isInfixCall implementation out of InfixCallChecker 2016-07-05 19:23:21 +03:00
Alexander Udalov
9bf91e95d0 Change default visibility for TypeAlias from 'internal' to 'public'
Since public type aliases will supposedly be more common than internal ones, it
makes sense to save on writing flags for the former rather than the latter
2016-07-05 18:18:45 +03:00
Alexander Udalov
a48e1680e9 Minor, fix typo in KParameter#isOptional kdoc 2016-07-05 18:18:44 +03:00
Alexander Udalov
3b349e9be0 Fix reflection on reference to generic property
See a93484b457 for the similar fix to function
references

 #KT-12967 Fixed
2016-07-05 18:18:43 +03:00
Alexander Udalov
48fe9fb2c0 Fix AssertionError in OverrideResolver on bad hierarchy
Previously the code was operating under the assumption that if the
implementation of some function (both the implementation and the function come
from supertypes) does not have a proper return type (the one which is a subtype
of return type of all declarations of this function in the supertypes), then
there's necessarily at least one abstract declaration of the function, such
that the implementation's return type is not a subtype of the return type of
that declaration. The assertion makes sense when the hierarchy above the
current class does not have any errors: we should report at least one function
as being "not implemented" in the current class.

However, as demonstrated by the test case, if there's an error already in the
supertypes with regard to overridability of members, this assertion may be
wrong. Reporting the "not implemented" error in such case is in fact not
necessary because of the already existing error ("return type mismatch" in the
test) in the supertypes

 #KT-12482 Fixed
2016-07-05 18:18:43 +03:00
Alexander Udalov
a533f8597d Fix debug names for some slices
Also move RUNTIME_ASSERTION_INFO and LOAD_FROM_JAVA_SIGNATURE_ERRORS to a
single class for simplicity
2016-07-05 18:18:26 +03:00
Denis Zharkov
a420fda825 Fix problem with missing handleResult call
At first we try to resolve 'handleResult' just as last expression
in a lambda is first argument, then if results are unsuccessful
try resolve 'handleResult' with fake Unit expression

 #KT-12969 Fixed
2016-07-05 15:36:06 +03:00
Denis Zharkov
888db4b3b5 Make 'controller' field package-private
To make it accessible from nested lambdas

 #KT-12974 Fixed
2016-07-05 15:36:06 +03:00
Denis Zharkov
d657bc8110 Treat any coroutine as it has non-const closure
Because it's always does capture controller
2016-07-05 15:36:06 +03:00
Denis Zharkov
df4bf61378 Refine types returned by OptimizationBasicInterpreter.newValue
#KT-12958 Fixed
2016-07-05 15:36:06 +03:00
Denis Zharkov
17a41ecc79 Revert 1431e2a0: Fix variables spilling for coroutines
Tracking variable type in table is unnecessary after variables liveness introduction:
values having types conflicting with table should be dead
2016-07-05 15:36:06 +03:00
Dmitry Jemerov
58378c074d fix compilation 2016-07-05 13:56:12 +02:00
Kirill Rakhman
79fff4aa3c Show quick doc for implicit lambda parameter 'it' (#889)
* Show quick doc for implicit lambda parameter 'it'
Fixes #KT-9271

* Remove useless code
2016-07-05 14:51:56 +03:00
Dmitry Jemerov
a770fe2ec8 fix test 2016-07-05 13:43:19 +02:00
Kirill Rakhman
b50176fa2e Implement quickfix for wrong primitive literal (#885)
* Implement quickfix for wrong primitive literal
Fixes: KT-12251

* fix style issue
2016-07-05 14:34:14 +03:00
Kirill Rakhman
3b290ce3dd Add quickfix for "Illegal usage of inline parameter" that adds noinline (#888)
Fixes #KT-12838
2016-07-05 13:13:14 +03:00
Yoshinori Isogai
68dd3dde59 Change contributing section of "this query" link to finding open Kotlin issues (#891) 2016-07-05 01:09:49 +03:00
Ilya Gorbunov
5891aa0c5e Improve Standard Library changelog for 1.1-M1 2016-07-04 21:21:25 +03:00
Valentin Kipyatkov
5e48b7349e KT-12803 Unused import when class is used in method reference
#KT-12803 Fixed
2016-07-04 20:49:40 +03:00
Valentin Kipyatkov
1941572717 KT-10433 Copy-pasting reference to companion object member causes import dialog in specific case
#KT-10433 Fixed
2016-07-04 20:49:40 +03:00
Valentin Kipyatkov
9463880c4e KT-12646 ConvertToBlockBody intention should use BodyResolveMode.PARTIAL
#KT-12646 Fixed
2016-07-04 20:49:40 +03:00
Denis Zharkov
62e69af53c Report declaration that was being analyzed when internal error happened
#KT-12188 Fixed
2016-07-04 18:16:06 +03:00
Denis Zharkov
ea7496044e Minor. Move KotlinFrontEndException to frontend module 2016-07-04 18:16:06 +03:00
Denis Zharkov
60a0cd8cfd Do not add error types as upper bounds in type parameter
#KT-10237 Fixed
 #KT-11821 Fixed
 #KT-8200 Fixed
2016-07-04 18:16:05 +03:00
Denis Zharkov
7723a3a105 Refine definition of whether single parameter the method should be boxed
Only 'Collection<Int>.remove(E): Boolean' should match
2016-07-04 15:44:00 +03:00
Denis Zharkov
adff666b0e Introduce additional overridability rule
It works only for Java methods and it's purpose is Java overridability rules emulation,
namely distinction of primitive types and their wrappers.

For example `void foo(Integer x)` should not be an override for `void foo(int x)`

 #KT-11440 Fixed
 #KT-11389 Fixed
2016-07-04 15:44:00 +03:00
Denis Zharkov
082c4f971e Minor. Extract overridability rule into separate method 2016-07-04 15:44:00 +03:00
Denis Zharkov
167882df5d Temporary return BuiltinOverridabilityCondition class
Otherwise bootstrap problems appear
2016-07-04 15:44:00 +03:00
Denis Zharkov
dc713cda2c Rename: BuiltinOverridabilityCondition -> JavaIncompatibilityRulesOverridabilityConditionBuiltinOverridabilityCondition 2016-07-04 15:44:00 +03:00
Denis Zharkov
6284598eff Minor. Fix comment 2016-07-04 15:44:00 +03:00
Alexander Udalov
b44f060ffa Do not consider fake variables for objects in :: resolution
The main change is in
NewResolutionOldInference.ResolutionKind.CallableReference, where
createVariableProcessor creates a processor which no longer lists objects

 #KT-12322 Fixed
2016-07-04 15:42:35 +03:00
Alexander Udalov
f290f1be68 Initial support of type inference for callable references
There are two main changes here:

- In CallCompleter, there was a bug: we assumed that the return type of a
  candidate must be a subtype of the expected type and were adding a
  corresponding constraint to the system. However, this is not true for
  callable references where the type of the expression is KFunctionN<...> and
  the return type of the candidate must be a subtype of the _last generic
  argument_ of the functional type.
- In CandidateResolver, we use a more correct (although still not precise)
  heuristic to determine if a candidate fits based on the non-substituted type
  of the callable reference expression which it would produce.

This can be further improved, see TODOs in CallCompleter. Also this does not
influence resolution of callable references being passed as arguments to
generic calls (that happens in GenericCandidateResolver)

 #KT-10968 Fixed
 #KT-11075 Fixed
 #KT-12286 Fixed
 #KT-12963 Open
 #KT-12964 Open
2016-07-04 15:42:35 +03:00
Alexander Udalov
24682bf1ec Fix AssertionError on property generation in multi-file classes
See 4a533168d9 for the original change which
introduced the problem

Note that the added test case _was not failing_ before the change. It's added
because there were no tests on multi-file class behavior in light classes mode
at all. The actual repro for the problem is difficult to make a test from

 #KT-12755 Fixed
2016-07-04 15:42:35 +03:00
Alexey Andreev
80deebbc2a Fix configuration of maven test of moduleKind configuration property 2016-07-04 14:56:45 +03:00
Alexey Andreev
88eef7337e KT-12928: decompose invocation like "a.foo(b)" to "$t = a; $s = $t.foo.bind($t); $s(b)" instead of "$t = a.foo; $t(b)", since in the latter case foo won't receive proper this. Add optimization that replaces "foo.bar.bind(baz)(args)" with "baz.bar(args)" 2016-07-04 14:52:12 +03:00
Dmitry Petrov
07cb3e09b9 KT-11892: explicitly qualified 'super' with a supertype that is overridden
by a different explicitly declared supertype is an error (as in Java)
(see http://docs.oracle.com/javase/specs/jls/se8/html/jls-15.html#jls-15.12.3)
2016-07-04 13:53:49 +03:00
Dmitry Petrov
dbf38823b9 Minor: use NoLookupLocation.WHEN_GET_SUPER_MEMBERS
for unqualified 'super' resolution
2016-07-04 13:53:49 +03:00
Dmitry Petrov
bf4f26318e KT-6916: do not create Progression instances in for-in-downTo loops 2016-07-04 13:38:37 +03:00
Dmitry Petrov
e187f799d9 Minor: extract optimized loop codegen creation logic for optimized 'for' cases.
There will be some more of those, and they all require some ad hock processing.
2016-07-04 13:38:36 +03:00
Dmitry Petrov
d45330c184 Fix CCE when typealias is used in a class reference ('TA::class') 2016-07-04 08:52:09 +03:00
Dmitry Petrov
5dfbaede4f Typealias can't be a qualifier 2016-07-04 08:30:18 +03:00
Dmitry Petrov
c8a5ccb1d0 "Go to class / symbol / super" & type aliases 2016-07-04 08:30:18 +03:00
Dmitry Petrov
0033cf85c4 Shorten references tests for typealias. 2016-07-04 08:30:18 +03:00
Dmitry Petrov
075195a3e4 Provide base icon for type alias descriptor.
Use platform icon for a class (as we do for type parameters).
2016-07-04 08:30:18 +03:00
Zalim Bashorov
48617caacc JS: generate a function with the required name for callable references instead try to change the name later. The previous solution doesn't work properly on some JS VMs (e.g. in FireFox)
#KT-12929 Fixed
2016-07-01 21:13:15 +03:00
Ilya Gorbunov
919c099a95 Minor: make test output less verbose 2016-07-01 18:50:53 +03:00
Ilya Gorbunov
157ed3f8c1 Claim a stream produced from a Sequence having ORDERED property.
Add a test verifying that property is respected.
2016-07-01 18:06:54 +03:00
Ilya Gorbunov
22ee3a8dc1 Relax type parameter constraint for Closeable.use and AutoCloseable.use to allow nullable receiver.
#KT-12894 Fixed
2016-07-01 18:05:25 +03:00
Ilya Gorbunov
e04873957e Notes in README about required environment variables to build libraries maven project. 2016-07-01 18:05:24 +03:00
Ilya Gorbunov
dd0ecb5ece Adjust exposed visibility of platform specific implementations. 2016-07-01 18:05:23 +03:00
Ilya Gorbunov
a45da393b9 Provide access to named groups of regex match result on JDK8.
#KT-12753 Fixed
2016-07-01 18:05:22 +03:00
Ilya Gorbunov
25974be3f8 Provide specialized stdlib function implementations depending on current JRE version #KT-8254 2016-07-01 18:05:21 +03:00
Ilya Gorbunov
b16f46d932 Add extensions from kotlinx.support libraries:
use for AutoCloseables: #KT-5899,
extensions for java.util.Stream.
2016-07-01 18:04:42 +03:00
Ilya Gorbunov
d6261521ff Create new artifacts for standard library extensions for JRE7 and JRE8.
Set default JDK for kotlin compiler plugin.
Set default JRE path for maven surefire plugin.
Run tests for extension modules on the corresponding JRE.
#KT-8254
2016-07-01 16:49:13 +03:00
Ilya Gorbunov
17e7c269ad Minor: make tryInlined test not depend on 'Closeable.use' implementation. 2016-07-01 04:42:38 +03:00
Stanislav Erokhin
24ad167b9d Update changelog for 1.1-M01. 2016-06-30 23:46:09 +03:00
Ilya Chernikov
3bc826a542 Update changelog - add scripting part 2016-06-30 21:32:42 +02:00
Ilya Chernikov
d345d2bc95 Reduce GradleScriptTemplateProvider dependency from gradle plugin, add missing pieses to it's environment
Fixes #KT-12913
2016-06-30 21:32:41 +02:00
Ilya Chernikov
55e084db8e Refactor script resolving interface again
- remove Future from resovler since the idea need additional considerations
- simplify script contents interface
 -extend script dependencies with additional javaHome property
2016-06-30 21:32:40 +02:00
Ilya Chernikov
dfec16d8e0 Refactor script resolving interface
- return Future from resovler
- pack script contents data to a separate interface
 -extend script dependencies with additional scripts property
 - minor renames and moves
2016-06-30 21:32:39 +02:00
Ilya Chernikov
4cd8101bad minor: rename depends annotation in script tests, add it to implicit imports 2016-06-30 21:32:38 +02:00
Ilya Chernikov
2ca4d635ea Support backward compatibility with gradle-script-kotlin 0.2.0, some refactoring 2016-06-30 21:32:37 +02:00
Alexander Udalov
1690dcd8df Refactor FakeCallResolver and usages
Remove useless overload, inline another to the single usage in tests, make some
parameters non-null
2016-06-30 21:29:23 +03:00
Alexander Udalov
95ed3ed78b Minor, remove unused components in ForLoopConventionsChecker
This is an addition to 8357f30
2016-06-30 21:29:23 +03:00
Denis Zharkov
1c3db309e5 Support repeated 'invoke' calls on coroutines defined within inline lambdas
#KT-12782 Fixed
2016-06-30 20:22:39 +03:00
Denis Zharkov
ae46c726fc Add try/catch block around method transformations 2016-06-30 20:22:39 +03:00
Denis Zharkov
c2ac49ec96 Support repeated 'invoke' calls on coroutines
#KT-12782 In Progress
2016-06-30 20:22:39 +03:00
Denis Zharkov
a25602c709 Fix spilling algorithm for double-sized coroutine parameters 2016-06-30 20:22:39 +03:00
Denis Zharkov
84964a76f9 Move generation of coroutines 'invoke' after 'doResume'
It's necessary because in next commits 'invoke' will depend on captured variables
that are being calculated during 'doResume' calculation
2016-06-30 20:22:39 +03:00
Alexey Tsvetkov
d3461d1519 Fix shading of META-INF/services in kotlin-compiler-embaddable 2016-06-30 20:14:21 +03:00
Denis Zharkov
9efd50c49c Minor. Cleanup getSpecialBridgeSignatureIfExists 2016-06-30 20:13:07 +03:00
Denis Zharkov
bb537aa834 Simplify method contract and add assertion
We don't generate stubs for final built-ins anyway
(as well as special bridges)
2016-06-30 20:12:34 +03:00
Denis Zharkov
84eb009c29 Refine stubs generation for special built-ins
Do not generate stub if declaration has the same signature

 #KT-12909 Fixed
2016-06-30 20:12:34 +03:00
Denis Zharkov
5c34b27ea9 Fix stub generation for special built-ins
Do not generate stubs if there is no special bridge in the current class
- there are already Kotlin super class in hierarchy
- special bridge has the same signature as method itself

 #KT-11915 Fixed
2016-06-30 20:12:34 +03:00
Alexander Udalov
c07d0d48d3 Fix KCallable#callBy to JvmStatic companion object members
#KT-12915 Fixed
2016-06-30 19:41:47 +03:00
Nikolay Krasko
e2bcdf8b9c Postpone counting fqName for anonymous classes (KT-12645)
#KT-12645 Fixed
2016-06-30 15:54:59 +03:00
Alexander Udalov
8357f3021e Do not report errors on fake elements in call checkers
#KT-12875 Fixed
2016-06-29 22:03:36 +03:00
Alexander Udalov
95291cdc18 Minor, move some checkers to more appropriate places 2016-06-29 22:03:35 +03:00
Alexander Udalov
ff72348105 Report error on protected setter call from super's companion
#KT-12847 Fixed
2016-06-29 22:03:35 +03:00
Alexander Udalov
77bb691d4e Rename SymbolUsageValidator -> ClassifierUsageChecker
Also validateTypeUsage -> check
2016-06-29 22:03:34 +03:00
Alexander Udalov
89730dfbc3 Move SymbolUsageValidator#validatePropertyCall to CallChecker 2016-06-29 22:03:33 +03:00
Alexander Udalov
d599d87978 Drop SymbolUsageValidator#validateCall in favor of CallChecker#check 2016-06-29 19:21:07 +03:00
Alexander Udalov
260689eb8c Invoke call checkers where symbol usage validators are called
The change in componentAccess.kt is a minor regression that should be addressed
later
2016-06-29 19:21:06 +03:00
Alexander Udalov
4a05c749b5 Support smart casts for functions of local variable delegates 2016-06-29 19:21:06 +03:00
Alexander Udalov
70a994b135 Drop resolution of deprecated plus/minus/get/set conventions
Also remove the corresponding quick fix
2016-06-29 19:21:05 +03:00
Alexander Udalov
291f1f6c3a Remove obsolete errors related to 'invoke' called on extension 2016-06-29 19:21:04 +03:00
Alexander Udalov
6ba32ed624 Refactor CallChecker and subclasses
Encapsulate everything that is needed in checkers into CallCheckerContext. Pass
an instance of this context instead of BasicCallResolutionContext to checkers.

Also pass an instance of the element to report errors on: this is useful
because before this, every checker had its own way of determining where should
the error be reported on. Some of them, for example, were not doing anything if
Call#calleeExpression returned null, which is wrong, see operatorCall.kt

 #KT-12875 Open
2016-06-29 19:20:00 +03:00
Alexander Udalov
f6f825e0dc Minor, extract validatePropertyCall out of SymbolUsageValidator#validateCall
BasicExpressionTypingVisitor#checkLValue is the only place where it's used.
There's no ResolvedCall instance for the setter call (only for the property
itself), that's why this special method is needed
2016-06-29 19:19:59 +03:00
Alexander Udalov
d7d2780666 Drop SymbolUsageValidator.Composite, use validators similarly to call checkers
Also fix warnings in DeprecatedSymbolValidator, DelegatedPropertyResolver and
elsewhere
2016-06-29 19:19:58 +03:00
Alexander Udalov
e94fd8f777 Make infix & operator checkers implement CallChecker
Instead of SymbolUsageValidator
2016-06-29 19:19:57 +03:00
Yan Zhulanow
bb083a51cc KT-12895, EA-84877: Fix NoSuchMethodError thrown when saving a Kotlin file.
newOutputStreamSupplier() is deprecated and was deleted in Guava 18.
2016-06-29 17:52:25 +03:00
Nikolay Krasko
51a2abdbc2 Minor: remove outdated comment 2016-06-29 16:16:32 +03:00
Nikolay Krasko
eee45e91ce Add more tests for PropertyAccessorDescriptor.isDeafult() usages 2016-06-29 16:16:31 +03:00
Nikolay Krasko
c936b3f3e0 Don't fail in setup because of access restricted exception 2016-06-29 16:16:30 +03:00
Kirill Rakhman
0320bd8184 Formatter: Remove spaces before question mark in nullable types (KT-12830)
#KT-12830 Fixed
2016-06-29 16:15:59 +03:00
Alexey Andreev
9a50e91cd8 KT-12893: fix another potential issue (could not reproduce) 2016-06-29 14:44:44 +03:00
Michael Bogdanov
476c1ec264 Compile android tests against jdk 6 2016-06-29 12:14:01 +03:00
Alexey Andreev
3a3e7bb814 KT-12893: when opening Kotlin compiler settings while kotlinc.xml does not specify which module kind to use, fallback to default value ("plain").
Fix #KT-12893
2016-06-29 12:02:26 +03:00
Michael Bogdanov
a8af654a20 Exclude 'immutableRemove.kt' test from Android tests 2016-06-29 09:33:42 +03:00
Michael Bogdanov
3b419e8ba3 Fix for KT-11964: No TABLESWITCH in when on enum bytecode if enum constant is imported
#KT-11964 Fixed
2016-06-29 09:32:45 +03:00
Alexey Sedunov
81ec18e1fc Minor: Fix test data 2016-06-28 20:58:58 +03:00
Denis Zharkov
efe718602a Support type aliases in incremental compilation
#KT-12871 Fixed
2016-06-28 16:22:08 +03:00
Denis Zharkov
f1363cbf88 Fix visibility checks for constructor call based on type alias
Constructor is invisible iff. either underlying constructor or corresposing type alias is invisible

 #KT-12888 Fixed
2016-06-28 16:22:08 +03:00
Pavel V. Talanov
1b416a674d ChangeLog, minor: make usages of quotes and backticks more consistent 2016-06-28 16:08:10 +03:00
Pavel V. Talanov
a6b1abf8d4 Minor: fix typos in ChangeLog 2016-06-28 16:08:08 +03:00
Pavel V. Talanov
5a2cd11c78 Update Changelog for 1.0.3 2016-06-28 16:08:06 +03:00
Alexey Sedunov
b83902a8b5 Rename: Update references to facade class when renaming file via matching top-level class
#KT-11903 Fixed
(cherry picked from commit a1d9a25)
2016-06-28 15:07:39 +03:00
Alexey Sedunov
932892243c Line Markers: Filter out irrelevant declarations before resolving in KotlinTestRunLineMarkerContributor
#KT-12647 Fixed
(cherry picked from commit cceeaeb)
2016-06-28 15:07:37 +03:00
Alexey Sedunov
068a120600 Rename: Constraint search scope of parameter declared in a private member
#KT-9649 Fixed
(cherry picked from commit fa144b0)
2016-06-28 15:07:36 +03:00
Alexey Sedunov
746b8895e2 Rename: Disable JavaMemberByKotlinReferenceInplaceRenameHandler for synthetic properties referenced from Kotlin code
#KT-9168 Fixed
(cherry picked from commit dfebdaf)
2016-06-28 15:07:34 +03:00
Alexey Sedunov
7a584e876b Rename: Support automatic test renaming for facade files
#KT-10578 Fixed
(cherry picked from commit 35050f4)
2016-06-28 15:07:32 +03:00
Alexey Sedunov
f9d28bf76d Override/Implement: Prefer not-nullable return type when overriding Java method without nullability annotation
#KT-12381 Fixed
(cherry picked from commit 2b87f8e)
2016-06-28 15:07:31 +03:00
Alexey Sedunov
542f8d9fd2 Move: Support quoted package names
#KT-12411 Fixed
(cherry picked from commit 95239e5)
2016-06-28 15:07:30 +03:00
Alexey Sedunov
89816c5f12 References: Support implicit references to annotation method 'value'. Support Find Usages/Rename on these references
#KT-12657 Fixed
(cherry picked from commit 68d0d84)
2016-06-28 15:07:28 +03:00
Alexey Sedunov
efa27e6048 Rename: Suggest renaming both property accessors with matching @JvmName when renaming one of them from Java
#KT-12759 Fixed
(cherry picked from commit 81a8e6a)
2016-06-28 15:07:25 +03:00
Alexey Sedunov
248f4c1645 Light Classes: Implement light elements for 'extends'/'implements' reference lists. Support adding/removing of super type list entries via light elements.
Fix exception on applying "Convert to class" intention to Java interface with Kotlin inheritor(s)
 #KT-11281 Fixed
(cherry picked from commit 4ec4914)
2016-06-28 15:07:24 +03:00
Alexey Sedunov
8e061c9ec1 Implement Abstract Member: Navigate to the generated declaration
#KT-12290 Fixed
(cherry picked from commit 6274c6b)
2016-06-28 15:07:23 +03:00
Alexey Sedunov
0d80bf030f Create from Usage: Fix exception in "Create class" quickfix applied to unresolved references in type arguments. Create class body when necessary
#KT-12777 Fixed
(cherry picked from commit dc90ec9)
2016-06-28 15:07:21 +03:00
Alexey Sedunov
ffe4e760d7 Override/Implement: Implement JavaDoc/KDoc copying
#KT-8682 Fixed
 #KT-12735 Fixed
(cherry picked from commit f4486be)
2016-06-28 15:07:19 +03:00
Alexey Sedunov
3f09b7f9d5 Minor: Rename jetRefactoringUtil.kt -> kotlinRefactoringUtil.kt
(cherry picked from commit a841f87)
2016-06-28 15:07:17 +03:00
Alexey Sedunov
0e5a997506 Minor: Drop unused variable
(cherry picked from commit 4441323)
2016-06-28 15:07:15 +03:00
Alexey Sedunov
296c7a16d3 Copy: Filter out invalid elements to prevent PsiInvalidElementAccessException
#KT-12747 Fixed
(cherry picked from commit 4a0a440)
2016-06-28 15:07:14 +03:00
Alexey Sedunov
69704c017f Create from Usage: Suggest "Create function/secondary constructor" quick fix on argument type mismatch
#KT-11864 Fixed
(cherry picked from commit 1912783)
2016-06-28 15:07:12 +03:00
Alexey Sedunov
5296b61ce9 Rename: Qualify references to members of enum companions in case of conflict with enum entries
#KT-10033 Fixed
(cherry picked from commit 3373d54)
2016-06-28 15:07:11 +03:00
Alexey Sedunov
35aa3f7646 Inspections: Don't show "Package directive doesn't match file location" in injected code
#KT-12376 Fixed
(cherry picked from commit a5a5fe5)
2016-06-28 15:07:09 +03:00
Alexey Sedunov
1da6c885e4 Rename: Preserve "Search in comments and strings" and "Search for text occurrences" settings in Rename dialog
#KT-8510 Fixed
(cherry picked from commit d9584d2)
2016-06-28 15:07:07 +03:00
Alexey Sedunov
7c95b5041b Minor: Fix changelog
(cherry picked from commit 2ea3980)
2016-06-28 15:07:06 +03:00
Alexey Sedunov
46c2dc9895 Rename: Record new name for Kotlin function which is being renamed via light method
#KT-12732 Fixed
(cherry picked from commit 28b9d3e)
2016-06-28 15:07:05 +03:00
Alexey Sedunov
04f54bee88 Rename: Process property accesor usages (Java) in comments and string literals
#KT-9435 Fixed
(cherry picked from commit 911afee)
2016-06-28 15:07:03 +03:00
Alexey Sedunov
14b6c1930e Rename: Add name suggestions to Rename dialog
#KT-6372 Fixed
(cherry picked from commit 84ca283)
2016-06-28 15:07:02 +03:00
Alexey Sedunov
d0a3732c94 Rename: Rename overridden property and all its accessors on attempt to rename overriding accessor in Java code
#KT-4791 Fixed
(cherry picked from commit 29e450e)
2016-06-28 15:07:01 +03:00
Alexey Sedunov
4c447d0580 Rename: Fix rename of ambiguous import reference to class/function when some referenced declarations are not changed
#KT-6663 Fixed
(cherry picked from commit 9ba8ecd)
2016-06-28 15:06:58 +03:00
Alexey Sedunov
b87d8e29e4 Rename: Implement conflict analysis for parameters. Qualify property references to avoid shadowing by parameters
#KT-10687 Fixed
(cherry picked from commit 7d6466d)
2016-06-28 15:06:54 +03:00
Alexey Sedunov
c9f659e89b Rename: Implement Rename conflict analysis for classes. Qualify class references to resove rename conflicts when possible
#KT-8611 Fixed
 #KT-8562 Fixed
(cherry picked from commit 8989ccc)
2016-06-28 15:06:52 +03:00
Alexey Sedunov
77b0bb9849 Rename: Implement Rename conflict analysis for properties. Qualify property references to resove rename conflicts when possible
#KT-8732 Fixed
 #KT-12543 Fixed
(cherry picked from commit e23029d)
2016-06-28 15:06:49 +03:00
Stanislav Erokhin
43f5da0ece Add eap channel for 1.1 into plugin updater. 2016-06-28 14:47:49 +03:00
Denis Zharkov
ed28b5a15e Use modality and visibility from mutable class declaration
Otherwise open may be used instead of abstract (in most cases)
2016-06-28 14:25:44 +03:00
Pavel V. Talanov
cbf78c7298 KotlinCacheServiceImpl: create new locks when creating caches that delegate to other caches
Remove single globalContext that was passed around to every configurations
Correctly create exception trackers when delegating caches
Delegate builtIns instance when delegating caches
Create specialized JvmBuiltIns only if Sdk is specified
2016-06-28 12:40:28 +03:00
Denis Zharkov
d53c53a900 Support annotations on type aliases declarations 2016-06-28 10:33:29 +03:00
Denis Zharkov
e24f0653fb Support type aliases in stub builder 2016-06-28 10:33:29 +03:00
Denis Zharkov
daa356860c Minor. Drop redundant parameter 2016-06-28 10:33:29 +03:00
Denis Zharkov
067fe35b72 Fix type deserialization failure when type alias was not found
It's crucial for decompilation as declarations are always being deserialized
with no dependencies

 #KT-12832 Fixed
2016-06-28 10:33:29 +03:00
Denis Zharkov
15ce4f8856 Minor. Add comment about type aliases based types metadata format 2016-06-28 10:33:29 +03:00
Denis Zharkov
d78177dc23 Refine metadata format for typealias based type 2016-06-28 10:33:29 +03:00
Denis Zharkov
d39d36b94c Render unabbreviated part of type wrapped in common comments
It's necessary for preserving DescriptorRenderer invariant, namely
only valid code should be generated
2016-06-28 10:33:29 +03:00
Michael Bogdanov
249be0a142 Small changes in tests to support them on Android 2016-06-28 10:12:15 +03:00
Alexander Udalov
601dc96a34 Minor, rename protobuf field according to style guide 2016-06-27 20:18:57 +03:00
Alexander Udalov
4c8e8b099a Update protobuf from 2.5.0 to 2.6.1 2016-06-27 20:14:00 +03:00
Alexey Andreev
cfbe48ac46 KT-3008: fix ABI compatibility test 2016-06-27 15:33:31 +03:00
Alexey Andreev
33248e7721 KT-3008: minor code style fixes 2016-06-27 15:33:31 +03:00
Alexey Andreev
da53b9a9a4 KT-3008: fix support of KProperty/KMutableProperty 2016-06-27 15:33:30 +03:00
Alexey Andreev
202400cb97 KT-3008: remove unused code that handles anonymous modules, since there's no way to declare them via configuration 2016-06-27 15:33:30 +03:00
Alexey Andreev
055be070e9 KT-3008: when inlining functions from external modules, replace calls to functions in the external module via new mechanism instead of Kotlin.modules 2016-06-27 15:33:29 +03:00
Alexey Andreev
f029b720e7 KT-3008: change the way how descriptions of module kind are rendered in IDEA configuration tab 2016-06-27 15:33:29 +03:00
Alexey Andreev
97605a97da KT-3008: multiple minor fixes after code review 2016-06-27 15:33:28 +03:00
Alexey Andreev
713a7efcdf KT-3008 Add support of module kind to Ant task. Repair Ant JS tests 2016-06-27 15:33:28 +03:00
Alexey Andreev
a9ed789727 KT-3008 Fix CLI and JPS tests related to JS translator 2016-06-27 15:33:28 +03:00
Alexey Andreev
2d994c1a03 KT-3008 Run Google closure compiler in a separate JVM 2016-06-27 15:33:27 +03:00
Alexey Andreev
64cd0b70d7 KT-3008 Minor refactoring and clean up 2016-06-27 15:33:27 +03:00
Alexey Andreev
b090b79d92 KT-3008 Add UI that allows to change module kind in IDEA Kotlin configurator 2016-06-27 15:33:26 +03:00
Alexey Andreev
496539d101 KT-3008 Add module kind attribute to Maven plugin. Fix tests from libraries subproject 2016-06-27 15:33:26 +03:00
Alexey Andreev
b6b604d78f KT-3008 Fix UMD and plain module wrappers when module id is not a valid JS identifier 2016-06-27 15:33:25 +03:00
Alexey Andreev
e38b83880f KT-3008 Add tests for module wrappers 2016-06-27 15:33:25 +03:00
Alexey Andreev
0cfacfa44a KT-3008 Merge JS runtime modules in one kotlin.js 2016-06-27 15:33:25 +03:00
Alexey Andreev
b556b6efca KT-3008 Fix JS backend tests 2016-06-27 15:33:24 +03:00
Alexey Andreev
848d7f92fa KT-3008 Implement AMD, CommonJS and UMD wrappers. Compile stdlib and builtins modules into separate JS files and wrap them in UMD. 2016-06-27 15:33:24 +03:00
Alexey Andreev
95b78e18df KT-3008 Change the way how modules are referenced in JS 2016-06-27 15:33:23 +03:00
Alexey Andreev
2909533522 KT-3008 Add module kind. Include module kind and module dependencies in metadata 2016-06-27 15:33:23 +03:00
Nikolay Krasko
8d055f6952 Use file.modificationStamp to invalidate caches for synthetic files
It previously worked because of updating all counters. That behaviour was removed in
3b860d69ee.

getUserData(FILE_OUT_OF_BLOCK_MODIFICATION_COUNT) is probably useless because copied file has
isEventSystemEnabled() == false that prevents sending notifications about PSI changes. This need additional checks.
2016-06-27 15:02:42 +03:00
Nikolay Krasko
67eca2cbb7 Minor: remove superfluous method that was necessary becuase of KT-5457 2016-06-27 15:02:42 +03:00
Michael Bogdanov
abc7d5101d Fix for KT-12106: import static of reified companion object method throws IllegalAccessError
#KT-12106 Fixed
2016-06-27 12:31:31 +03:00
Mikhael Bogdanov
5df52e08cc Temporary removed increment and '+=' tests on local delegated properties 2016-06-27 12:13:28 +03:00
Pavel V. Talanov
6d04c6e102 Drop no longer used FileLibraryScope 2016-06-25 22:25:31 +03:00
Pavel V. Talanov
80de07d98f KotlinScriptConfigurationManager: refactor roots caching and use NonClasspathDirectoriesScope 2016-06-25 22:25:29 +03:00
Pavel V. Talanov
9c09b8a37d KotlinScriptConfigurationManager: do not use dumbService and 'scriptExternalImportsProvider' is no longer nullable 2016-06-25 22:25:27 +03:00
Pavel V. Talanov
2534a5fdfc KotlinScriptConfigurationManager: perform initial caching using StartupManager 2016-06-25 22:25:26 +03:00
Pavel V. Talanov
6a1096a8e9 KotlinCacheServiceImpl: cache all script dependencies as whole to provide faster completion in scripts
A lot of stuff to be fixed after
2016-06-25 22:25:24 +03:00
Pavel V. Talanov
be1e8fcfda Disable templates that are available on "TOP_LEVEL" in scripts 2016-06-25 22:25:21 +03:00
Pavel V. Talanov
c3df743a28 FileScopeFactory: extra imports computed via virtual file as opposed to KtFile
This fixes completion session acting as if there are no imports
2016-06-25 22:25:19 +03:00
Pavel V. Talanov
e46fab5151 KotlinScriptConfigurationManager: Use invokeLater in notifyRootsChanged 2016-06-25 22:25:17 +03:00
Pavel V. Talanov
c9583f3aa9 Provide (not actually correct) resolve scope for script files that have dependencies
This is needed for completion to determine dependencies of the file correctly
2016-06-25 22:25:16 +03:00
Pavel V. Talanov
2e126d3452 Allow navigating to Java sources of script dependencies
Using deprecated API seems the only working solution atm
2016-06-25 22:25:14 +03:00
Pavel V. Talanov
8ad856e1d0 Allow navigating to Kotlin library sources of script dependencies 2016-06-25 22:25:12 +03:00
Pavel V. Talanov
693eeb9f0a Split ScriptModuleInfo into script itself and its dependencies
For now include all dependencies of all scripts for every script, to be improved later
2016-06-25 22:25:10 +03:00
Pavel V. Talanov
1a9c46f34b Ide Scopes: Allow including script dependencies into search scope
This includes script dependencies into scopes for some of the IDE services
Should be revisited later to decide if given service should work for scripts
2016-06-25 22:25:08 +03:00
Pavel V. Talanov
7ededbd5e2 KotlinScriptConfigurationManager: run caching code in smart mode 2016-06-25 22:25:05 +03:00
Pavel V. Talanov
1da3efea81 Implement API to get source roots of script dependencies in KotlinScriptConfigurationManager and KotlinScriptConfigurationManager 2016-06-25 22:25:03 +03:00
Pavel V. Talanov
ae61767bc7 Refactor: move KotlinScriptDependenciesIndexableSetContributor to a separate file 2016-06-25 22:25:02 +03:00
Pavel V. Talanov
ad9c8eedfb Implement JavaClassesInScriptDependenciesShortNameCache to allow completion and auto-import of java classes 2016-06-25 22:25:00 +03:00
Pavel V. Talanov
9185baf13c J2K KotlinSourceFilterScope: rename file 2016-06-25 22:24:58 +03:00
Pavel V. Talanov
a461dd0da2 J2K KotlinSourceFilterScope: autoconvert 2016-06-25 22:24:56 +03:00
Pavel V. Talanov
ddb3327992 Minor: Remove scoping limitation in newly created indices 2016-06-25 22:24:54 +03:00
Pavel V. Talanov
8921ced9dd Indenter: fix indentation on top level in scripts 2016-06-25 22:24:52 +03:00
Ilya Chernikov
b0bff64cff fixes after review 2016-06-25 22:24:50 +03:00
Ilya Chernikov
5a77d2e92b Change to single ScriptTemplateDefinition annotation and separate AcceptedAnnotations annotation on resolver 2016-06-25 22:24:48 +03:00
Ilya Chernikov
f24d954302 Remove unused support for script templates configs 2016-06-25 22:24:47 +03:00
Ilya Chernikov
4f05f839a3 Add previous imports to resolving interfaces to enable effective caching implementations 2016-06-25 22:24:45 +03:00
Ilya Chernikov
f30b402640 Change a parameter "context" in script templates to environment: Map<String, Any?>? 2016-06-25 22:24:43 +03:00
Ilya Chernikov
bf683a63fb Implement annotation proxy generation for script dependencies resolvers 2016-06-25 22:24:41 +03:00
Ilya Chernikov
8a06eafaf1 Rename-refactor interfaces and methods of the script dependencies resolving 2016-06-25 22:24:39 +03:00
Ilya Chernikov
5fd013ef42 minor: rename a field in ScriptTemplateProvider interface 2016-06-25 22:24:37 +03:00
Ilya Chernikov
5bea5bcc37 Add script files changes monitoring, logic for initialization during index rebuilding 2016-06-25 22:24:36 +03:00
Ilya Chernikov
8dac72f465 Add support for script classfiles caching 2016-06-25 22:24:34 +03:00
Ilya Chernikov
3157421189 Fix File Manager tests after classpath/index initialization became lazy 2016-06-25 22:24:32 +03:00
Ilya Chernikov
64bb47ed37 Switch to File instead of String for classpaths in script dependencies 2016-06-25 22:24:30 +03:00
Ilya Chernikov
5e3ba36cc1 Simplify GetScriptDependencies interface 2016-06-25 22:24:28 +03:00
Ilya Chernikov
a60e1ab807 Fix implementation of gradle ScriptTemplateProvider extension
WARNING: adds dependency to idea's gradle-and-groovy-plugin to idea-core
2016-06-25 22:24:27 +03:00
Ilya Chernikov
834372a3b3 Implement extension point for providing script templates 2016-06-25 22:24:25 +03:00
Ilya Chernikov
082290f8e3 Refactor script dependencies management 2016-06-25 22:24:23 +03:00
Ilya Chernikov
c244414f3c Convert ScriptNameUtil to Kotlin: phase 3 - refactor 2016-06-25 22:24:21 +03:00
Ilya Chernikov
590f09ee58 Convert ScriptNameUtil to Kotlin: phase 2 - convert 2016-06-25 22:24:19 +03:00
Ilya Chernikov
f96517a54a Convert ScriptNameUtil to Kotlin: phase 1 - rename file 2016-06-25 22:24:17 +03:00
Ilya Chernikov
d212d369b0 Implement support for extra imports 2016-06-25 22:24:16 +03:00
Ilya Chernikov
402e8c1e3e Add dependency from annotation extraction mechanisms to the prototype, with tests 2016-06-25 22:24:14 +03:00
Ilya Chernikov
3f5a2c2781 Add initial prototype of script def based on annotated base class, with simple tests 2016-06-25 22:24:12 +03:00
Ilya Gorbunov
1e66147e91 Update changelog for 1.0.3: section about new compiler options 2016-06-25 09:17:11 +03:00
Mikhael Bogdanov
a090133581 Inline properties support in incremental compilation 2016-06-24 17:05:53 +03:00
Mikhael Bogdanov
93a770fcc8 Code clean 2016-06-24 17:05:53 +03:00
Mikhael Bogdanov
853c4d4453 Added language feature check for inline properties 2016-06-24 17:05:52 +03:00
Mikhael Bogdanov
321e97a329 AnalyzerExtension refactoring, added support for inline properties 2016-06-24 17:05:52 +03:00
Mikhael Bogdanov
7baf70e8fa Support reified extension properties 2016-06-24 17:05:51 +03:00
Mikhael Bogdanov
7c67a3315a Temporary throw exception on unsupported increment and augment assignment on local delegated properties and inline properties 2016-06-24 17:05:50 +03:00
Mikhael Bogdanov
5a2e00d2ad Base support of StackValue.Property inlining 2016-06-24 17:05:50 +03:00
Mikhael Bogdanov
d524a34fc7 Support property accessor in inline checks 2016-06-24 17:05:49 +03:00
Mikhael Bogdanov
2cc177255f Don't report inapplicable target for 'inline' keyword on property and its accessors 2016-06-24 17:05:49 +03:00
Mikhael Bogdanov
db5d9940df Added 'isInline' implementation to property accessor descriptors 2016-06-24 17:05:48 +03:00
Mikhael Bogdanov
679f53b449 Inline get/setValues for local delegated properties 2016-06-24 17:05:48 +03:00
Mikhael Bogdanov
6f761d4e7d Construct delegates in expression codegen, not in LocalLookup 2016-06-24 17:05:47 +03:00
Denis Zharkov
2578fc3344 Do not generate mutable collection stub methods in interfaces
#KT-12359 Fixed
2016-06-24 16:37:19 +03:00
Denis Zharkov
1780f57265 Fix mutable collection stub methods generation for corner case
The problem is that
`override fun remove(element: E): CollectionWithRemove<E>`
seems to be illegal from Java's point of view, while it's OK for JVM

These declarations have the same signature (return type is isgnored)
- override fun remove(element: E): CollectionWithRemove<E>
- override fun remove(element: E): Boolean

When we meet such declaration we choose random declaration for fake override in synthetic class
that may lead to signature clash
2016-06-24 16:37:19 +03:00
Zalim Bashorov
47e1ff34f0 JS: fix that kotlin's breakpoints don't work with JavaScript debugger
#KT-12773 Fixed
2016-06-24 15:46:30 +03:00
Yan Zhulanow
6e6c9682ec Fix KT-12173 (Kotlin Lint False Positive for "Toast created but not shown" inside SAM adapter).
(cherry picked from commit 4940d3b)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
1720f8b4ff KT-12681 (Lint: run from main menu / Analyze: Kotlin inspections reports only java source)
Cause we've copied Lint diagnostics to the Kotlin project, there's no harm in making them Kotlin-only.
(cherry picked from commit 7105648)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
8f75ababde KT-12674 "Calling new methods on older versions" errors for inlined constants
Inlined constants from Java should not be detected.
(cherry picked from commit b34ee4e)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
206e439595 KT-12023 Kotlin Lint: Cast doesn't trigger minSdk error
Check Kotlin as/is types.
(cherry picked from commit c0db8e0)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
6752df189d Make infix modifier diagnostic message more informative (KT-12589)
(cherry picked from commit 2744309)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
a434055b55 Load Gradle subplugin artifacts from the root project buildscript classpath as well (KT-11885)
(cherry picked from commit b54b0da)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
1de05b965e KT-12015 (Kotlin Lint False Positive for Bundle.getInt())
Java approach is not sufficient here, in Kotlin receivers can be implicit.
Use Kotlin extension/dispatch receivers to figure out the receiver type for our method call.
(cherry picked from commit cdedf1d)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
530ab42de6 Android Extensions: Fix KT-10969 (NullPointerException when finding view in Fragment if getView() is null)
(cherry picked from commit 80f5852)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
2cd0e9c8d8 Fix EA-80764. Do not try to get the resource manager for the disposed module
(cherry picked from commit c3bd243)
(cherry picked from commit cddcf02)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
e0243fd568 Fix EA-82394. PsiType.getClassName() can return null. Return "<anonymous type>" in that case.
(cherry picked from commit 8be1335)
(cherry picked from commit 5101596)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
1a0acf3208 Fix EA-82166. NPE. loadModel() can return null, and it's a bad idea to call methods on a null pointer.
(cherry picked from commit cf033d0)
(cherry picked from commit 37dc0ae)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
001d5397c5 Fix EA-82449. Do not run Lint diagnostics if the project is already disposed
(cherry picked from commit 98b2899)
(cherry picked from commit 2179ee8)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
c5e0f992e5 KT-12387 Fix Performance problem with Lint in IDE
Call checkCanceled() before running Lint diagnostics (UastScanner)
(cherry picked from commit c6e328a)
(cherry picked from commit 696475e)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
4ee19cce93 Fix #KT-12047 (Kotlin Lint: "Missing @JavascriptInterface on methods" does not report anything)
(cherry picked from commit 61e8e01)
(cherry picked from commit dbc54e2)
2016-06-24 15:10:19 +03:00
Yan Zhulanow
d1447faf2b Fix #KT-12015 (Kotlin Lint False Positive for Bundle.getInt()).
Android firstly checks API version against the function call receiver type, so we should do the same to be consistent.
(cherry picked from commit c3d01ec)
(cherry picked from commit 5c78acc)
2016-06-24 15:10:19 +03:00
Denis Zharkov
8caee7940e Use 'Any?' instead of throwing NPE when calculating star projection type
It's a quite hacky solution, but the choice seems to be conservative, so these types can be refined later

 #KT-9597 Fixed
2016-06-24 10:23:16 +03:00
Ilya Gorbunov
71476d5d43 Minor: remove unused commonArgs 2016-06-23 22:47:47 +03:00
Ilya Gorbunov
7c5c4610e8 Rename -jdk compiler option to -jdk-home (jdkHome), add jdk path validation. 2016-06-23 22:47:45 +03:00
Ilya Gorbunov
13016cae93 Add tests for 'jdk' compiler option for CLI, maven and gradle. 2016-06-23 22:46:07 +03:00
Ilya Gorbunov
644df89dc9 CLI: Allow to specify JDK for classpath building with '-jdk' compiler argument.
Maven: support jdk parameter linked to kotlin.compiler.jdk property.
Gradle: support jdk compiler option.
2016-06-23 22:46:07 +03:00
Ilya Gorbunov
1157e052ee Maven: support languageVersion parameter, linked to property kotlin.compiler.languageVersion. 2016-06-23 22:46:07 +03:00
Ilya Gorbunov
848599e940 Maven and Gradle tests for jvmTarget parameter. 2016-06-23 22:46:07 +03:00
Ilya Gorbunov
3f3a3820b8 Maven: support jvmTarget parameter in Maven, linked to property kotlin.compiler.jvmTarget.
Gradle: support jvmTarget compiler option.
2016-06-23 22:46:07 +03:00
Alexander Udalov
1ebcd193a2 Add release notes for 1.0.2-1 2016-06-23 17:37:43 +03:00
Pavel V. Talanov
5d31d6d98d REPL: call 'toString()' for returned values explicitly and correctly report exceptions
#KT-12389 Fixed
2016-06-23 16:12:03 +03:00
Pavel V. Talanov
8ac40d7401 Refactor Repl: use sealed class to represent line result 2016-06-23 16:12:01 +03:00
Pavel V. Talanov
17832e10e7 Refactor ReplInterpreter and ReplFromTerminal classes
Drop some of the exception reporting code
2016-06-23 16:11:50 +03:00
Pavel V. Talanov
246409d033 J2K ReplFromTerminal: rename file 2016-06-23 15:58:07 +03:00
Pavel V. Talanov
35c56431b3 J2K ReplFromTerminal, convert code 2016-06-23 15:58:05 +03:00
Stanislav Erokhin
7c2825b397 KT-12623 Fixed ISE: Type parameter ... not found for public fun ...
#KT-12623 Fixed
Also EA-72653 fixed.
2016-06-23 02:03:24 +03:00
Alexander Udalov
3eeccb407e Simplify and fix createReflectionTypeForCallableDescriptor
Previously its call sites needed to determine if the receiver type should be
ignored (e.g. if the reference is to static member or nested class constructor,
or if it's a bound reference), and 3 of 4 callers did it incorrectly. Simplify
this by passing the DoubleColonLHS instance everywhere.

Also rename it to createKCallableTypeForReference

 #KT-12738 Fixed
 #KT-12751 Fixed
 #KT-12799 Fixed
2016-06-22 21:35:57 +03:00
Alexander Udalov
6cc10aa226 Minor, move utilities form CallableReferencesResolutionUtils.kt closer to usages 2016-06-22 21:35:57 +03:00
Alexander Udalov
80bf6e1bee Refactor CallableReferencesResolutionUtils.kt
Get rid of trace & reportOn parameters of
createReflectionTypeForCallableDescriptor: move the two checks that required
them to DoubleColonExpressionResolver and combine with other checks into a
single function that checks the validity of the referenced symbol. This also
makes these checks reported only once when invalid expressions are passed as
function arguments (previously they were also reported from
getResolvedCallableReferenceShapeType).

Also inline getReflectionTypeForCandidateDescriptor after this, and refactor
its usages
2016-06-22 21:35:57 +03:00
Alexander Udalov
cf630e01db Minor, refactor "is KProperty" checks in ReflectionTypes 2016-06-22 21:35:57 +03:00
Alexander Udalov
e68de436bb Allow data classes to inherit from other classes
#KT-10330 Fixed
2016-06-22 21:35:57 +03:00
Stanislav Erokhin
065c4e19ec Add debug info for EA-79267 - (T is not T) assert: TypeCheckingProcedure.checkSubtypeForTheSameConstructor 2016-06-22 19:42:09 +03:00
Stanislav Erokhin
ad285d5ca2 KT-11679 Fixed exception at ResolvedCallImpl.getArgumentMapping()
#KT-11679 Fixed
Also fixed EA-75913 EA-78908
2016-06-22 19:42:09 +03:00
Stanislav Erokhin
7389d412a5 Fixed visibility check on a property with private setter of the subclass
#KT-3689 Fixed
2016-06-22 19:42:08 +03:00
Pavel V. Talanov
f607bdebd3 Update Changelog for 1.0.3-eap-58 2016-06-22 14:18:08 +03:00
Pavel V. Talanov
0d52a20a46 Add Kotlin "Tips of the day"
Content from https://youtrack.jetbrains.com/issue/DOC-4026
2016-06-22 14:17:56 +03:00
Pavel V. Talanov
b750f20718 Update changelog for 1.0.3 2016-06-22 14:17:44 +03:00
Pavel V. Talanov
585440b3bd Minor, changelog: add 1.0.4 section 2016-06-22 14:17:03 +03:00
Mikhail Glukhikh
bd8c7577e1 Replace explicit parameter with it : correct handling of it from outer lambda #KT-12437 Fixed
(cherry picked from commit cb8fe96)
2016-06-21 22:24:54 +03:00
Mikhail Glukhikh
b44c94a887 Fix for EA-81477 : correct handling of a property without initializer (but with e.g. getter)
(cherry picked from commit 4e2d35a)
2016-06-21 22:24:44 +03:00
Mikhail Glukhikh
5b328e9042 Can be parameter inspection: delete only particular modifiers (e.g. no vararg) #KT-12768 Fixed
(cherry picked from commit d4116b5)
2016-06-21 22:24:27 +03:00
Mikhail Glukhikh
4abcc278fd Can be constructor property: comment saver introduced to retain comments; unbound comments now added before, not after
(cherry picked from commit 886cf21)
2016-06-21 22:23:23 +03:00
Mikhail Glukhikh
4145e3438f Minor fixes: can be constructor property
(cherry picked from commit 4d44e15)
2016-06-21 22:23:12 +03:00
Mikhail Glukhikh
8d2389d15c Code cleanup: "can be constructor property" applied
(cherry picked from commit 6967711)
2016-06-21 22:23:01 +03:00
Nikolay Krasko
49aaeb5a38 Refactoring: wrap Spacing.createSpacing to Kotlin function with default parameters 2016-06-21 21:54:50 +03:00
Nikolay Krasko
f8196d8331 Add space after a semicolon only if there's another child at the same line 2016-06-21 21:54:50 +03:00
Kirill Rakhman
b560aab06d Format spaces before enum arguments
Fixes #KT-12714
2016-06-21 21:54:50 +03:00
Kirill Rakhman
a520be5509 Format spaces around semicolon
Fixes #KT-12689
2016-06-21 21:54:50 +03:00
Kirill Rakhman
db387bd573 Format spaces after annotation in annotated expression
Fixes #KT-12781
2016-06-21 21:54:50 +03:00
Kirill Rakhman
ae83330679 Format spaces inside curly braces in string template
Fixes #KT-12791
2016-06-21 21:54:50 +03:00
Kirill Rakhman
655fc45a87 Format spaces around in keyword
Fixes: KT-10680
2016-06-21 21:54:50 +03:00
Alexey Tsvetkov
8fe63cdfaf Prevent usage of deprecated constructor
This removes warning with gradle 2.14.
Before 2.14 constructor was removed, then it was returned and deprecated.

    #KT-12786 fixed
2016-06-21 20:22:53 +03:00
Alexey Tsvetkov
34181402fb Fix CCE when creating kotlin-js task in gradle plugin 2016-06-21 20:22:53 +03:00
Denis Zharkov
453ee55615 Fix coroutine generation in case of empty lambda
'handleResult' should be called in such case too
2016-06-21 15:52:44 +03:00
Denis Zharkov
b6ccd03ef4 Make loops generation lazy
As well as all other kinds of expressions

While it's not necessary in a sense that 'for' loop can not be plain expression,
i.e. it can't be an argument for safe-call etc., but laziness is still very convenient property.

E.g. within attached test they were generated twice in case of last expression
of coroutine block, because coroutine related codegen part is built upon
assumption that all expressions should be generated lazy.
2016-06-21 15:52:44 +03:00
Denis Zharkov
ad71934c55 Minor. Add 'operator' modifier in test for handleResult 2016-06-21 15:52:44 +03:00
Alexey Andreev
2e6a48576d KT-12417: add support of RTTI against K(Mutable)Property* types 2016-06-21 15:42:50 +03:00
Mikhail Glukhikh
048b6b60e9 dangerousFlexibleTypeOrNull : minor refactoring
(cherry picked from commit 31e8fe5)
2016-06-21 15:22:26 +03:00
Mikhail Glukhikh
70becfbd86 Has platform type inspection is now intention-based
(cherry picked from commit 7cc6b9b)
2016-06-21 15:22:15 +03:00
Mikhail Glukhikh
a68e8e0db5 Introduce additional fixes & configurable problem range for intention-based inspection
(cherry picked from commit ed23aa9)
2016-06-21 15:21:48 +03:00
Mikhail Glukhikh
2b2b937263 Specify type explicitly intention: now derived from self targeting range intention
(cherry picked from commit b09b5a9)
2016-06-21 15:20:24 +03:00
Mikhail Glukhikh
5c4b6ba8b0 Has platform type : public API only option
(cherry picked from commit a084c1d)
2016-06-21 15:20:11 +03:00
Kirill
86b70ba995 Add quickfix tests for HasPlatformTypeInspection
(cherry picked from commit af1b26b)
2016-06-21 15:20:00 +03:00
Kirill Rakhman
d7bf03be46 Implement inspection for declarations with implicit platform types #KT-12310 Fixed
(cherry picked from commit 00d8c26)
2016-06-21 15:19:13 +03:00
Sergey Mashkov
1cb72169f9 KT-12512 "Different IDE and Maven plugin version" inspection is being invoked for non-tracked pom.xml files 2016-06-21 13:56:22 +03:00
Sergey Mashkov
7999dc8d01 Fix EA-83601 - ISE: PomFile.<init> 2016-06-21 13:56:17 +03:00
Sergey Mashkov
49ccfa0ec4 KT-12558 Configure Kotlin in Project: Maven: Undo could revert changes in all poms 2016-06-21 13:56:13 +03:00
Sergey Mashkov
f47fd46b7a Maven: script tag injects kotlin 2016-06-21 13:56:08 +03:00
Sergey Mashkov
0250ab4ac2 KT-12568 Maven pom.xml: execution configuration: file path completion works only in some sub-elements 2016-06-21 13:56:03 +03:00
Dmitry Jemerov
75b860ab95 handle IOException from File.getCanonicalFile() (EA-83981 - NA: KotlinToJVMBytecodeCompiler.reportRuntimeConflicts)
(cherry picked from commit 765bd44)
2016-06-21 12:07:50 +02:00
Dmitry Jemerov
450caf4033 VirtualFile.getParent() is nullable (EA-84222 - NPE: DecompiledFileWritingAccessProvider.isPotentiallyWritable)
(cherry picked from commit a77f4df)
2016-06-21 12:07:39 +02:00
Dmitry Jemerov
4bc64b8014 PsiElement.getNode() is nullable (EA-84534 - NPE: DocCommentConverterKt.content)
(cherry picked from commit c3e38dd)
2016-06-21 12:07:24 +02:00
Denis Zharkov
132190a71e Minor. Optimize imports 2016-06-21 11:07:36 +03:00
Denis Zharkov
fe5fe63f0a Fix visibility check for dynamic members within protected method
#KT-11857 Fixed
2016-06-21 11:07:36 +03:00
Valentin Kipyatkov
4a7a04e366 Temporarily reverted commit "Smart cast to not null should affect flexible types too" because it causes exception in compiler 2016-06-20 23:18:53 +03:00
Alexander Udalov
311301f430 Check return type when locating method in reflection
#KT-11824 Fixed
2016-06-20 21:03:51 +03:00
Pavel V. Talanov
bafe8e55ce Create SyntheticMemberDescriptor interface
Implement this interface by sam adapters/constructors and use it in navigation

 #KT-11708 Fixed
2016-06-20 20:15:34 +03:00
Nikolay Krasko
4087e650aa Wrong delegation to delegation property in debugger when property defined in another module (KT-12678)
Different bytecode can be generated for delegated property and for non-delegated one. Backend inspects DELEGATED_PROPERTY_CALL to understand the property type, and expects that
this information had been already recorded into context. Frontend writes DELEGATED_PROPERTY_CALL into context during body resolve or type inference if type is not present.

Either way in debugger context it may happen that the DELEGATED_PROPERTY_CALL won't be written into context.

 #KT-12678
2016-06-20 16:22:04 +03:00
Valentin Kipyatkov
0bc5007147 KT-12369 Completion: pressing dot after class name should not cause insertion of constructor call
#KT-12369 Fixed
2016-06-20 16:19:02 +03:00
Valentin Kipyatkov
b9719bfe82 Fixed test so that it really tests what's intended 2016-06-20 16:19:02 +03:00
Valentin Kipyatkov
eb1dbfc652 KT-12669 Completion should show variant with () when there is default lambda
#KT-12669
2016-06-20 16:19:02 +03:00
Valentin Kipyatkov
962a8f9bf4 KT-12447 Don't use CompletionProgressIndicator in Kotlin plugin
#KT-12447 Fixed
2016-06-20 16:19:02 +03:00
Valentin Kipyatkov
4e16d67321 KT-12427 Completion doesn't work for "@receiver:" annotation target
#KT-12427 Fixed
2016-06-20 16:19:01 +03:00
Valentin Kipyatkov
1413a3fe63 KT-12328 Qualified function name inserted when typing before "if"
#KT-12328 Fixed
2016-06-20 16:19:01 +03:00
Valentin Kipyatkov
2ec81f44bf Fixed extension properties not completed after "get" 2016-06-20 16:19:01 +03:00
Valentin Kipyatkov
88bf7f883e No need to specially handle extensions from current file anymore (since searchScope for KotlinIndicesHelper includes current file) 2016-06-20 16:19:01 +03:00
Valentin Kipyatkov
568195bb34 Smart cast to not null should affect flexible types too 2016-06-20 16:19:00 +03:00
Denis Zharkov
5ee33e6ad5 Generate last expression in coroutine block even for Unit expected type 2016-06-19 12:50:54 +03:00
Denis Zharkov
96eb3f411d Minor. Simplify 'async' tests 2016-06-19 12:50:54 +03:00
Denis Zharkov
72eb87f5d0 Support inline suspend functions
A lot of additional work was required to support them:
- Suspension points are being identified by two markers
  instead of one pointing to suspend function call
- Approach with replacing return type of suspend function does not work anymore.
  So we decode suspension return type as an argument for begin marker
- It became necessary to perform variables liveness analysis
  (see comment in org.jetbrains.kotlin.codegen.coroutines.CoroutineTransformerMethodVisitor.spillVariables)
2016-06-19 12:50:54 +03:00
Denis Zharkov
5c3e554240 Minor. Remove redundant import 2016-06-19 12:50:53 +03:00
Denis Zharkov
99511cbf65 Minor. Replace Exception with Throwable in the root catch clause 2016-06-19 12:50:53 +03:00
Denis Zharkov
e7b9564699 Support coroutine lambda parameters in JVM backend 2016-06-19 12:50:53 +03:00
Denis Zharkov
5bac2fd5c9 Make mutable continuation fields volatile 2016-06-19 12:50:53 +03:00
Denis Zharkov
1431e2a06d Fix variables spilling for coroutines
Skip variables that conflict with local variable table info
Otherwise DEX rejects generated code
2016-06-19 12:50:53 +03:00
Denis Zharkov
07dcc6c616 Support 'handleException' operator in JVM backend 2016-06-19 12:50:53 +03:00
Denis Zharkov
6795393989 Introduce 'handleException' operator and relevant checks 2016-06-19 12:50:52 +03:00
Alexander Udalov
0e881daba3 Update diagnostic tests ReadMe, explain tests with diagnostic arguments 2016-06-19 12:45:22 +03:00
Alexander Udalov
456ba79793 Consider callable reference's LHS when resolving RHS
Previous resolution sequence (static scope, nested classes scope, receiver) and
a check against type parameters only made sense when there's a type, not an
expression, on the LHS of a callable reference. Also TransientReceiver is
incorrect in such case because private-to-this visibility check only works for
ExpressionReceiver values
2016-06-19 12:45:22 +03:00
Alexander Udalov
6562a2db19 Type-check reference to property with invisible setter to KProperty
#KT-12337 Fixed
2016-06-19 12:45:22 +03:00
Ilya Gorbunov
c5a208f3eb Rearrange stdlib unit tests across packages.
Rearrange JS stdlib unit tests.
2016-06-18 16:50:32 +03:00
Ilya Gorbunov
d266f546f4 Remove obsolete and not relevant to stdlib tests 2016-06-18 16:50:32 +03:00
Nikolay Krasko
43407f1c74 Remove old hack: Idea doesn't expect increasing modification count during highlighting (KT-12526)
addImport() is called from ImportAllMembersIntention.isApplicableTo() and increasing modification count during highlighting ruins Idea expectations.

 #KT-12526 Fixed
2016-06-18 16:06:37 +03:00
Alexey Tsvetkov
d4494d605a Exclude resources dir from surefire test search 2016-06-17 20:00:46 +03:00
Valentin Kipyatkov
1b16ff6c82 KT-11975 Invert if-condition intention does not simplify "is" expresssion
#KT-11975 Fixed
2016-06-17 18:09:07 +03:00
Alexander Udalov
3fa87fe4de Move get-protobuf later in update_dependencies
It invokes kotlinc, so should happen after the bootstrap compiler is downloaded
2016-06-17 17:23:19 +03:00
Mikhail Glukhikh
5ccbf47531 Elvis / if / when now infer error type in case of ErrorType + Nothing #KT-6665 Fixed
(cherry picked from commit 9a50a0b)
2016-06-17 16:43:24 +03:00
Mikhail Glukhikh
49fb9ff424 Sealed class hierarchies are now correctly processed in when (by checking possible smart casts to nested sealed classes) #KT-10648 Fixed
(cherry picked from commit 2eaaf9c)
2016-06-17 15:22:15 +03:00
Stanislav Erokhin
01430b4b99 Create hack for exception about "Empty intersection for types".
Hackaround for KT-11266, EA-79963, EA-72093,  EA-79976.
2016-06-17 01:39:44 +03:00
Nikolay Krasko
490ff621b6 Implement isInheritor method with utility method that has special behaviour for anonymous classes 2016-06-16 18:50:40 +03:00
Nikolay Krasko
784fd963cd Implement copy methods for anonymous and enum entry light classes 2016-06-16 18:50:39 +03:00
Nikolay Krasko
29b94f650c Make Kotlin light class more like PsiAnonymousClassImpl
Avoid delegating to cls delegate in more places
2016-06-16 18:50:39 +03:00
Nikolay Krasko
9359d0aab4 Compare anonymous classes with psi only to avoid counting qualified name 2016-06-16 18:50:38 +03:00
Alexander Udalov
de986ed051 Do not skip synthesized members when generating bridges
The condition here is obsolete since SAM adapters can no longer be overridden:
they are now extensions in another scope

 #KT-12708 Fixed
2016-06-16 16:51:18 +03:00
Alexander Udalov
af9883bccf Add test on accidental redeclaration of final members from java.lang.Enum
This is working because of the additional built-ins members added in 1.1
2016-06-16 16:51:18 +03:00
Alexander Udalov
79ecc9751b Report error on accidentally "overriding" wait/notify
Hard-code only Object members because diagnostics are reported for all other
classes out of the box in 1.1

 #KT-7174 Fixed
2016-06-16 16:51:18 +03:00
Alexander Udalov
da332d1a27 Validate "-jvm-target" value in CLI, improve message 2016-06-16 16:51:18 +03:00
Alexander Udalov
02fd5371aa Update metadata version to 1.1.2 and bytecode version to 1.0.1
This is needed for the upcoming 1.1 EAP: it'll be easier to diagnose problems
arising from new language features and bytecode modifications
2016-06-16 16:51:18 +03:00
Alexander Udalov
b4f81d4bb5 Use 'JVM_TARGET: 1.8' directive in codegen tests on 1.8 target 2016-06-16 16:51:18 +03:00
Mikhail Glukhikh
ac03d98cb2 Inspection "can be primary constructor property" with relevant quick-fix #KT-8477 Fixed
(cherry picked from commit 2db7562)
2016-06-16 16:24:43 +03:00
Dmitry Petrov
9240c82934 KT-12733 'rangeTo' as a non-qualified call is not optimized in 'for'
Use ResolvedCall corresponding to 'for' loop range expression
for optimized "for-in-range-literal".
Cleanup.
2016-06-16 11:30:05 +03:00
Alexey Tsvetkov
5e21af7bdd Ensure direcory for class file stubs always exists
This fixes the warning "classpath entry does not exist"

    #KT-12352 fixed
2016-06-15 20:28:47 +03:00
Alexey Tsvetkov
af10c13ef1 Set friend modules for android gradle test tasks
This fixes the following issues:
1. When product flavors were used, android unit tests could not refer
to internal symbols from main source set.
2. Android instrumentation tests could not refer
to internal symbols from main source set

    #KT-11166 fixed
2016-06-15 20:28:47 +03:00
Zalim Bashorov
0e428ca10c JPS: don't consider that production target of module "B" is depends on test target of module "A" when "B" depends on "A"
#KT-12595 Fixed
2016-06-15 15:01:32 +03:00
Dmitry Petrov
a17b0dd1b5 KT-5075 Optimize array/collection indices usage in 'for' loop
Use specialized 'for' loop code generation strategy for loops over array indices and collection indices.
2016-06-15 14:01:18 +03:00
Mikhael Bogdanov
3a8591a729 Support 'jvm-target' in CLI 2016-06-15 13:43:29 +03:00
Mikhael Bogdanov
1c3ce93275 Generate same delagation structure as in jvm 6 target until new binary compatibility design
We need to make some decision about binary compatibility beetwen targets and semantics, so now old logic is used
2016-06-15 13:43:29 +03:00
Mikhael Bogdanov
bb59638039 Support bridges in interfaces. Fix for KT-12416: Missed bridges in js backend
#KT-12416 Fixed
2016-06-15 13:43:28 +03:00
Mikhael Bogdanov
c778af518b isJvm6Interface -> isAnnotationOrJvm6Interface 2016-06-15 13:43:28 +03:00
Mikhael Bogdanov
16159c483d Generate defaults methods on extending jvm6 interfaces 2016-06-15 13:43:27 +03:00
Mikhael Bogdanov
331341bd4d Don't generate delegates on overriding jvm8 interfaces 2016-06-15 13:43:27 +03:00
Michael Bogdanov
01aa89b1ea Generate delegation body for default interface methods, calculate proper abstractness for them 2016-06-15 13:43:26 +03:00
Mikhael Bogdanov
fc8058848f Added classVersion to KotlinJvmBinaryClass 2016-06-15 13:43:26 +03:00
Michael Bogdanov
0ae2175a00 Add jvm8 target key, added jvm 8 option to bytecode tool window
IsJava8 renamed to isJvm8
2016-06-15 13:43:25 +03:00
Michael Bogdanov
96f892d60c Obtain class file version from GenerationState 2016-06-15 13:43:25 +03:00
Mikhael Bogdanov
77a386a266 Move java8 'compileKotlinAgainstKotlin' test under 'codegen/java8/compileKotlinAgainstKotlin/jvm6' folder 2016-06-15 13:43:24 +03:00
Mikhael Bogdanov
0169f10bf3 Support directives in write flag tests 2016-06-15 13:43:23 +03:00
Mikhael Bogdanov
5d5734841b Compile logic moved from AbstractBlackBoxCodegenTest to CodegenTestCase 2016-06-15 13:43:23 +03:00
Mikhael Bogdanov
dce260563c Support directives in CompileKotlinAgainstKotlinTest 2016-06-15 13:43:22 +03:00
Alexander Udalov
99f4c7b6e7 Fix error in kapt on enum constructors with parameters
Do not skip writing the fictitious 'java/lang/Synthetic' annotation in KAPT
mode, because its absence makes ASM confuse indices of enum constructor
parameters (it cannot figure out that there are two additional parameters, name
and ordinal)

 #KT-12694 Fixed
2016-06-14 22:06:45 +03:00
Nikolay Krasko
5e7d007e75 Build output parser in separate module under 1.6 (KT-12159)
KotlinOutputParser accessed from gradle execution environment that can be started under Java 1.6.

 #KT-12159 Fixed
2016-06-14 20:58:07 +03:00
Alexander Udalov
7e38b93d80 Use protobuf with renamed packages, pack to IDEA plugin
Update GenerateProtoBuf.kt to also regexp-replace com.google.protobuf with
org.jetbrains.kotlin.protobuf in generated Java sources

 #KT-12581 Fixed
2016-06-14 14:17:22 +03:00
Alexander Udalov
952a85414b Rename packages in protobuf-java binaries and sources
#KT-12581 In Progress
2016-06-14 14:17:22 +03:00
Mikhail Glukhikh
b1734920b6 Surround with null check : applicable also for TYPE_MISMATCH 2016-06-13 15:56:41 +03:00
Mikhail Glukhikh
10935ba9db Wrap with safe let call : minor refactoring 2016-06-13 15:42:04 +03:00
Mikhail Glukhikh
954952ae71 Surround with null check : apply for ITERATOR_ON_NULLABLE 2016-06-13 15:34:15 +03:00
Mikhail Glukhikh
7f771075fb Surround with null check : minor refactoring 2016-06-13 15:34:10 +03:00
Mikhail Glukhikh
230f73acc9 KT-11104 extra : name validator introduced for wrap with safe let call 2016-06-13 15:34:04 +03:00
Mikhail Glukhikh
3c49b5f342 KT-11104 extra : "wrap with safe let call" is now applicable for argument type mismatches 2016-06-13 15:33:59 +03:00
Mikhail Glukhikh
47c1106d5d Quick-fix "wrap with safe let call" introduced #KT-11104 Fixed 2016-06-13 15:33:53 +03:00
Mikhail Glukhikh
f8b6ed226a Correct "Show type" on an invoked expression #KT-12671 Fixed 2016-06-13 15:33:48 +03:00
Mikhail Glukhikh
90342ea33b KT-11104 : quick fix "surround with null check" 2016-06-13 15:33:36 +03:00
Stanislav Erokhin
585dcbf1f3 KT-10717 Type inference for lambda with local return
#KT-10717 Fixed
2016-06-10 21:28:05 +03:00
Stanislav Erokhin
da01e4a57c Add assertion for variable as operator call. 2016-06-10 21:28:04 +03:00
Stanislav Erokhin
03241419bd Minor. removed several tests with error calls. 2016-06-10 21:28:04 +03:00
Dmitry Petrov
c414f456a4 Like nested classes, it is not possible to reference inherited nested type alias by a child class. 2016-06-10 16:21:27 +03:00
Dmitry Petrov
7b6c1c092c Inherited type alias capturing type parameters of generic base class:
doesn't work partially due to KT-11123.
2016-06-10 16:21:27 +03:00
Dmitry Petrov
bee1762b0e 'Nothing' as function return type and property type can't be abbreviated. 2016-06-10 16:21:27 +03:00
Dmitry Petrov
0ff677596f Modifiers checking for type aliases.
Exposed type checking for type aliases.
2016-06-10 16:21:26 +03:00
Dmitry Petrov
139e219ebd Star projections in type alias expansions are substituted to star projections
for corresponding type parameters in expanded type.
Test that type alias arguments are substituted literally,
and no type approximation is performed on substitution.
2016-06-10 16:21:26 +03:00
Dmitry Petrov
1efbd34529 Test: arguments of type aliases should be substituted literally,
without type approximation.
TYPE_MISMATCH is an expected error.
2016-06-10 16:21:26 +03:00
Dmitry Petrov
7da50069eb Additional tests for illegal type in type alias expansion:
'Array<Nothing>' passed as an unused parameter to type alias.
2016-06-10 16:21:26 +03:00
Dmitry Petrov
115f40d371 UNUSED_TYPEALIAS_PARAMETER: special diagnostic for typealias parameters
explicitly telling that such type parameters are not used in type checking.
Move typealias-related utility functions on types to TypeUtils.kt.
2016-06-10 16:21:25 +03:00
Dmitry Petrov
40dd36bcf6 Recursive type alias expansion:
when resolving abbreviated type, do not check bounds
if the resulting type contains type aliases.
2016-06-10 16:21:25 +03:00
Nikolay Krasko
688c742802 j2k: minor fixes in KtLightClassForAnonymousDeclaration 2016-06-10 14:17:36 +03:00
Nikolay Krasko
4679ae60ab j2k: actual convert KtLightClassForAnonymousDeclaration 2016-06-10 14:17:35 +03:00
Nikolay Krasko
81b94d0988 j2k: rename KtLightClassForAnonymousDeclaration 2016-06-10 14:17:31 +03:00
Nikolay Krasko
9e9c670ada Minor: clean up and reformat 2016-06-10 14:17:20 +03:00
Dmitry Petrov
a4267f069d Codegen should just skip (local) type alias declarations. 2016-06-10 10:25:10 +03:00
Dmitry Petrov
c04b16d6cc Type parameters for type alias constructor are declared type parameters for type alias
(no implicit type parameters from containing scopes).
2016-06-10 10:25:09 +03:00
Dmitry Petrov
bcd1df4efe More tests for type alias constructor type parameters. 2016-06-10 10:25:09 +03:00
Dmitry Petrov
6924ed53ec Local type aliases: resolve 2016-06-10 10:25:09 +03:00
Dmitry Petrov
9a7bbc1516 Type alias shouldn't expand to a malformed type (e.g., 'Array<Nothing>'). 2016-06-10 10:25:09 +03:00
Dmitry Petrov
d02785806d Type alias shouldn't capture type parameters of inaccessible outer classes. 2016-06-10 10:25:09 +03:00
Dmitry Petrov
12710bec2f Redeclaration errors for type aliases: type alias vs function. 2016-06-10 10:25:08 +03:00
Dmitry Petrov
5ad4c8b9c7 Redeclaration errors for type aliases: type alias vs property. 2016-06-10 10:25:08 +03:00
Mikhail Glukhikh
9470308fe7 If to when: more accurate comment handling #KT-12649 Fixed 2016-06-09 20:00:14 +03:00
Denis Zharkov
d2bf4cbfa0 Fix reference resolution on suspension calls 2016-06-09 17:57:15 +03:00
Denis Zharkov
f1b0204ffe Fix public API test data after Continuation introduction 2016-06-09 17:57:15 +03:00
Denis Zharkov
036f90053e Minor. Fix formatting 2016-06-09 17:57:15 +03:00
Denis Zharkov
92bd6880da Add AdditionalBuiltInsMembers language feature and relevant checks 2016-06-09 17:57:15 +03:00
Denis Zharkov
072abe89cd Minor. Replace manual checkCoroutineBuilderCall with BuilderFunctionsCallChecker 2016-06-09 17:57:15 +03:00
Denis Zharkov
1b82e43d76 Add LanguageFeatureSettings parameter to single method in checkers interfaces
This parameter will be used further for target-dependent checks

Also introduce SimpleDeclarationChecker/SimpleCallChecker sub-interfaces (more weak ones)
Implementing them instead of base checkers is more convenient in most cases
2016-06-09 17:57:15 +03:00
Alexander Udalov
59342000ae Fix toString() and reflectLambda() for lambdas with generic types in signatures
#KT-10771 Fixed
2016-06-09 17:28:56 +03:00
Alexander Udalov
dc2972d99e Implement copy in FunctionDescriptorImpl, call doSubstitute only in CopyConfiguration#build 2016-06-09 17:28:56 +03:00
Alexander Udalov
ee8ca0b850 J2K JavaElementCollectionFromPsiArrayUtil 2016-06-09 17:28:56 +03:00
Stanislav Erokhin
cd4c9968df Minor. fix test 2016-06-09 16:42:42 +03:00
Stanislav Erokhin
53bf720503 Fix type alias problems after rebase. 2016-06-09 16:42:41 +03:00
Alexander Udalov
db3e0798c8 Minor, move the Lombok hack a bit higher 2016-06-09 16:38:47 +03:00
Alexander Udalov
3477f6ee85 Minor, drop java_generic_services option from .proto files
There are no service definitions in our .proto files, so this option had no
effect
2016-06-09 15:54:49 +03:00
Alexander Udalov
aba1cc3d83 Minor, cleanup GenerateProtoBuf.kt 2016-06-09 15:54:49 +03:00
Alexander Udalov
0c0a451d20 J2K serialization: fix compilation and prettify 2016-06-09 15:54:49 +03:00
Alexander Udalov
6692aca5f3 J2K serialization: invoke automatic J2K conversion 2016-06-09 15:54:49 +03:00
Alexander Udalov
89c0af0d80 J2K serialization: move .java -> .kt 2016-06-09 15:54:49 +03:00
Alexander Udalov
3469e980cb Minor, remove 'depends' from kotlin-build-common-test Ant task
Similarly to other targets in build.xml, this simplifies manual partial
compilation of artifacts
2016-06-09 15:54:49 +03:00
Alexander Udalov
70378a07c9 Minor, fix code style in CompilerConfiguration 2016-06-09 15:54:49 +03:00
Stanislav Erokhin
4f943dcbf8 KT-11778 Exception in Lombok plugin: Rewrite at slice FUNCTION
#KT-11778 Fixed.
EA-64051 Fixed.
2016-06-09 14:22:23 +03:00
Stanislav Erokhin
93b27417af Minor. update testdata. 2016-06-09 12:59:06 +03:00
Stanislav Erokhin
6bce4f6d6a Minor. compilation after rebase. 2016-06-09 12:58:25 +03:00
Stanislav Erokhin
541b9954f5 Minor. Roll back behaviour for FlexibleType.isError. 2016-06-09 12:58:23 +03:00
Stanislav Erokhin
74be53d297 Add documentation for KotlinType. 2016-06-09 12:58:21 +03:00
Stanislav Erokhin
fd40273a0d Removed interface LazyType. 2016-06-09 12:58:19 +03:00
Stanislav Erokhin
63b2f89356 Removed laziness from TypeDeserializer, because DeserializedMemberScope has cache for callable descriptors. 2016-06-09 12:58:18 +03:00
Stanislav Erokhin
de97bc2a05 Minor. simplified creation of simple type with default scope. 2016-06-09 12:58:16 +03:00
Stanislav Erokhin
0bec639b07 Introduce LazyWrappedType. 2016-06-09 12:58:14 +03:00
Stanislav Erokhin
7a5469faa4 Minor. rename LazyJavaTypeResolver -> JavaTypeResolver. 2016-06-09 12:58:12 +03:00
Stanislav Erokhin
c30754ae3c Remove laziness from LazyJavaTypeResolver.
This laziness was removed because main client of JavaTypeResolver is LazyJavaMemberScope. And this scope run enhance signatures which run resolve for this types.
2016-06-09 12:58:10 +03:00
Stanislav Erokhin
e5aa8ebe7c Minor. simplify code. 2016-06-09 12:58:09 +03:00
Stanislav Erokhin
8c2ad82de7 Minor. fixes after review 2016-06-09 12:58:07 +03:00
Stanislav Erokhin
797ef8d143 Refactoring. Removed all usages of asSimpleType except related to TypeSubstitution. 2016-06-09 12:58:05 +03:00
Stanislav Erokhin
dd362f683c Corrected util method getFunctionTypeForSamType for flexible types. 2016-06-09 12:58:03 +03:00
Stanislav Erokhin
a6da15f8e2 Minor. remove several methods from TypeUtils 2016-06-09 12:58:02 +03:00
Stanislav Erokhin
f41c8dc045 Refactoring. Removed several usages of asSimpleType 2016-06-09 12:58:00 +03:00
Stanislav Erokhin
1d9ca06b96 Remake KotlinTypes. 2016-06-09 12:57:59 +03:00
Stanislav Erokhin
56122460aa Remove type capabilities. 2016-06-09 12:57:58 +03:00
Stanislav Erokhin
4c0572fb2f Remove type capability CustomTypeVariable. 2016-06-09 12:57:56 +03:00
Stanislav Erokhin
a5c1e009c3 Remove type capability AbbreviatedType. 2016-06-09 12:57:55 +03:00
Stanislav Erokhin
203c4cd94d Remake Raw type representation.
(cherry picked from commit b21cede)
2016-06-09 12:57:53 +03:00
Stanislav Erokhin
04e97f5058 Refactoring. Do not use SubtypingRepresentatives as TypeCapability. 2016-06-09 12:57:51 +03:00
Stanislav Erokhin
1eaefa7fed Refactoring. Remove type capability Flexibility. 2016-06-09 12:57:50 +03:00
Stanislav Erokhin
669558c4ba Refactoring. Move flexible type factory to deserialization module. 2016-06-09 12:57:48 +03:00
Stanislav Erokhin
42857992ed Minor. Add ALLOW_AST_ACCESS to two tests.
We suppose, that AST access is allowed if we have property with initializer.
2016-06-09 12:57:47 +03:00
Stanislav Erokhin
7bc2c55d12 Refactoring. Create WrappedType. 2016-06-09 12:57:46 +03:00
Stanislav Erokhin
957bae18be Refactoring. Move flexible type creation to KotlinTypeFactory. 2016-06-09 12:57:44 +03:00
Stanislav Erokhin
3a451744c5 Introduce KotlinTypeFactory 2016-06-09 12:57:43 +03:00
Stanislav Erokhin
8c6dd95e3f Introduce SimpleType. 2016-06-09 12:57:41 +03:00
Dmitry Petrov
44829a61e7 Report redeclaration errors for type aliases vs class/interface/object. 2016-06-09 10:27:51 +03:00
Dmitry Petrov
d3721872b2 Tests for type alias diagnostics: type parameter bound violation in type alias constructor 2016-06-09 10:27:51 +03:00
Dmitry Petrov
b552425558 Tests for type alias diagnostics: type projections in type alias constructor
(should report same errors as for classes)
2016-06-09 10:27:51 +03:00
Dmitry Petrov
d86be43171 Tests for type alias diagnostics: wrong number of type arguments in type alias constructor 2016-06-09 10:27:51 +03:00
Dmitry Petrov
ccbade663b Do not perform type alias expansion for error types. 2016-06-09 10:27:50 +03:00
Dmitry Petrov
b2e5cfebee Diagnostics for type alias expansion errors in type alias RHS 2016-06-09 10:27:50 +03:00
Ilya Gorbunov
753be08de6 Minor: update links in ReadMe 2016-06-08 21:45:25 +03:00
gandrianakis
83e97d272e Small grammar fixes for documentation of default value handling related methods for Map 2016-06-08 21:45:24 +03:00
gandrianakis
cbc5c6f792 Slight improvement of wording in the section that explains the benefits of contributing code examples for library functions 2016-06-08 21:34:18 +03:00
Pavel V. Talanov
e032e4ad54 Update changelog for 1.0.3 2016-06-08 19:29:21 +03:00
Pavel V. Talanov
b08881df58 Changelog, minor: merge duplicating JS sections 2016-06-08 19:29:07 +03:00
Denis Zharkov
9c929dd609 Minor. Rename MandatoryMethodTransformer -> FixStackWithLabelNormalizationMethodTransformer
It's necessary because some usages suppose that it's only purpose is fixing stack
2016-06-08 18:53:16 +03:00
Denis Zharkov
2c78ce22a5 Minor. Simplify coroutine transformation 2016-06-08 18:53:16 +03:00
Denis Zharkov
771cca9c23 Fix some try-catch block related problems in coroutine transformer
Split all try-catch blocks when they intersect suspension points
2016-06-08 18:53:16 +03:00
Denis Zharkov
e802049fd0 Ignore handleReturn calls if functions is not operator 2016-06-08 18:53:16 +03:00
Denis Zharkov
692acc463a Fix handleResult call generation for statement-like last expression in a block 2016-06-08 18:53:16 +03:00
Denis Zharkov
3a5197d1ae Minor. Simplify collecting save/restore markers for FixStackMethodTransformer 2016-06-08 18:53:16 +03:00
Denis Zharkov
0d01edb7f9 Adapt FixStackAnalyzer to code generated by coroutine transformation
Without this change internal error happens while inlining coroutine code with try/catch inside
Also get rid of hack with SKIP_MANDATORY_TRANSFORMATIONS_ANNOTATION_DESC
See comment within MethodAnalyzer for clarification
2016-06-08 18:53:16 +03:00
Denis Zharkov
678e8c2baa Setup label value in constructor to be invalid until 'invoke(Controller)' call 2016-06-08 18:53:16 +03:00
Denis Zharkov
759cb83dfb Add checks that coroutines are available at the given language level 2016-06-08 18:53:16 +03:00
Denis Zharkov
2bdaec6eac Refine definition of whether call is suspension point
It's not about all calls to suspend functions, they may called from non-coroutine code
2016-06-08 18:53:16 +03:00
Denis Zharkov
1067531224 Introduce light-weight user data parts into FunctionDescriptor 2016-06-08 18:53:16 +03:00
Denis Zharkov
dd3de8372f Minor. Cleanup FunctionDescriptorImpl 2016-06-08 18:53:16 +03:00
Denis Zharkov
07592398c1 Preserve sources properly for coroutine parts
Otherwise incremental reporting leads to exception when inlining into coroutine body happens
2016-06-08 18:53:16 +03:00
Denis Zharkov
7dda2d9f62 Add ability to set up source element when copying descriptor 2016-06-08 18:53:16 +03:00
Denis Zharkov
dddd7413a1 Fix generated code for suspending in the middle of object construction 2016-06-08 18:53:16 +03:00
Denis Zharkov
b8d4d39f4d Add custom applicability checks for suspend/coroutine modifiers 2016-06-08 18:53:16 +03:00
Denis Zharkov
d760a2ec3b Add CallChecker prohibiting non-local suspension calls
Effectively suspension point is local <=> return to relevant lambda is allowed in place
2016-06-08 18:53:16 +03:00
Denis Zharkov
b1189eff23 Make suspension calls generation more stable
Instead of performing signature change during transformation
it's convinient to make just when generating corresponding call,
for example there is no need to think about default parameters as they just work as is

See comment above replaceSuspensionFunctionViewWithRealDescriptor for clarification
2016-06-08 18:53:16 +03:00
Denis Zharkov
84ae28992e Minor. Drop unused class 2016-06-08 18:53:16 +03:00
Denis Zharkov
611490e080 Support non-local returns to coroutine label from inline lambda
- Use proper class descriptor when retreiving continuation object (see previous commit)
- Use return type as VOID for such cases
- Load correct labels related to coroutine lambda from outer context
2016-06-08 18:53:16 +03:00
Denis Zharkov
94bd6dcc82 Use proper coroutine class descriptor for extension receiver generation
Before this commit context.getThisDescriptor() has been used, that was quite correct
until suspension happens inside inlined lambda (it has different this-descriptor)
2016-06-08 18:53:16 +03:00
Denis Zharkov
75e112e752 Implement basic support for coroutines in JVM backend 2016-06-08 18:53:16 +03:00
Denis Zharkov
077fc528d1 Minor. Change CompilationException parameter to @Nullable
A lot of call sites actally pass null as an element,
so it's better to fail with original stack-trace instead of NPE
caused by nullability check
2016-06-08 18:53:16 +03:00
Denis Zharkov
20d1d12f3b Revert "'yield' reserved as a keyword"
This reverts commit 434082cadb.
2016-06-08 18:53:16 +03:00
Denis Zharkov
5c1e17c8e7 Revert "Completion fix for reserved 'async' syntax"
This reverts commit 318f0c89b2.
2016-06-08 18:53:16 +03:00
Denis Zharkov
3ede8f97e6 Revert "Quick fix for deprecated async syntax"
This reverts commit afc1e24571.
2016-06-08 18:53:16 +03:00
Denis Zharkov
1af9321c20 Revert "'async' reserved in front of function literals"
This reverts commit 6155d836a5.
2016-06-08 18:53:16 +03:00
Denis Zharkov
7d3333e86e Revert "Reserve "async* {}", extend the quick-fix"
This reverts commit a7e7d53e2b.
2016-06-08 18:53:16 +03:00
Denis Zharkov
bf3e6247aa Minor. Extract TransformationMethodVisitor with abstract performTransformations(@NotNull MethodNode methodNode) 2016-06-08 18:53:16 +03:00
Denis Zharkov
b1ec0dda45 Resolve all return expressions in coroutine as fake calls to 'handleResult' 2016-06-08 18:53:16 +03:00
Denis Zharkov
372791eb15 Replace common extension receiver of coroutine-lambda with magic one
Currently it only contains additional synthetic declarations for suspend-functions

E.g. `fun <V> await(f: CompletableFuture<V>): V` for `fun <V> await(f: CompletableFuture<V>, machine: Continuation<V>): Unit`
2016-06-08 18:53:16 +03:00
Denis Zharkov
8f4ee0528e Implement operator checks for controller's handleResult 2016-06-08 18:53:16 +03:00
Denis Zharkov
fcbff72f6f Replace expected type for coroutine-lambda
Use 'handleResult' method of controller to determine what lambda should return

If original declaration was
fun builder(coroutine c: Controller.() -> Continuation<Unit>) = 1
and there is 'fun handleResult(x: X, c: Continuation<Nothing>)',
then expected type for lambda is 'Controller.() -> X'
2016-06-08 18:53:16 +03:00
Denis Zharkov
e97376bb2c Introduce coroutine-related API into built-ins 2016-06-08 18:53:16 +03:00
Denis Zharkov
1a93c276f6 Minor. Apply 'Simplify if' 2016-06-08 18:53:16 +03:00
Denis Zharkov
88637ba336 Minor. Cleanup codegen.optimization package 2016-06-08 18:53:16 +03:00
Denis Zharkov
329fb9d619 Introduce 'coroutine'/'suspend' modifiers 2016-06-08 18:53:16 +03:00
Denis Zharkov
38d74a16fe Change FlagsToModifiers from enum to abstract
Add 2 non-trivial implementations and one for boolean flags
2016-06-08 18:53:16 +03:00
Denis Zharkov
f434801bf6 Minor. Drop 'CodegenBased.callableDescriptor' field and relevant generic parameter
It was redundant for most of subclasses
2016-06-08 18:53:16 +03:00
Alexey Sedunov
158037dd68 Create Test Intention: Fix RuntimeException on attempt to convert generated test class to Kotlin
#KT-12285 Fixed
 #EA-82281 Fixed
2016-06-08 17:50:21 +03:00
Pavel V. Talanov
32c5ccdaad plugin.xml: Add dependency on java module
This restricts usage of plugin to IDEA and Android Studio
2016-06-08 17:45:32 +03:00
Dmitry Petrov
9c74f27967 Type alias can't expand to 'dynamic' 2016-06-08 15:55:52 +03:00
Dmitry Petrov
ef4c3bdae8 Don't expand types that don't contain type aliases or type parameters. 2016-06-08 15:55:52 +03:00
Dmitry Petrov
cf8cbad11c Refactor: extract TypeAliasExpander as a separate class. 2016-06-08 15:55:52 +03:00
Dmitry Petrov
cb08d976d3 Tests for importing type aliases 2016-06-08 15:55:52 +03:00
Mikhail Glukhikh
4b6b35dadf Type parameter is considered capable of taking any value for the purpose of cast possibility check #KT-6611 Fixed 2016-06-08 15:25:34 +03:00
Mikhail Glukhikh
99acbf16b2 CastDiagnosticsUtil.kt: converted to Kotlin 2016-06-08 15:25:29 +03:00
Mikhail Glukhikh
f3f7bff376 CastDiagnosticsUtil.java --> CastDiagnosticsUtil.kt 2016-06-08 15:25:25 +03:00
Ilya Chernikov
7153ea61d8 Restore logic of StandardScriptDefinition handling, fixes codegen tests 2016-06-07 21:13:06 +02:00
Ilya Chernikov
e8c13882b4 Make script detection API generic, fix tests 2016-06-07 21:13:05 +02:00
Ilya Chernikov
3393d7b7d2 Optimize script definitions handling
Loading script configs only from project root dir
Optimize script definition retrieval in the KtScript
2016-06-07 21:13:04 +02:00
Ilya Chernikov
656fcc9775 Refactor and fixes after review
improving script constructor search algorithm - now default params should be supported
remove prefix Customized- from scripts ModuleInfo-related classes
refactoring ideaModuleInfos after review
refactoring ResolveSessionProvider construction for readability
refactoring KotlinScriptConfigurationManager after review
fixing KotlinScriptDefinitionProvider after review
2016-06-07 21:13:04 +02:00
Pavel V. Talanov
d5b486eb80 Refactor LazyClassDescriptor and minor changes
Minor: get script definition once
Refactor: get rid of 'LazyClassDescriptor#getInjectedSupertypes'
Minor: rename scope
2016-06-07 21:13:03 +02:00
Ilya Chernikov
4d95e873a9 Add a guard for empty dependencies list, fixes EA-82348 2016-06-07 21:13:02 +02:00
Pavel V. Talanov
8e700cdb10 Do not limit scope when searching in index by default 2016-06-07 21:13:01 +02:00
Ilya Chernikov
478ae96e50 Implement a compiler config key to add preconfigured extra imports for scripts 2016-06-07 21:13:01 +02:00
Ilya Chernikov
956bcf6d7a Fix permgen problems with script launching by avoiding reflection as much as possible 2016-06-07 21:13:00 +02:00
Ilya Chernikov
b9ea9513b1 Rewrite handing and caching of script configurations
The refactoring could enable lazy update of the index on script loading, but seems that makeRootsChange
call doesn't work as expected, therefore initial project scan is performed in the KotlinScriptConfigurationManager
anyway
2016-06-07 21:12:59 +02:00
Ilya Chernikov
3e6616de42 Read script config if appropriate flag is specified, fix classpath handling 2016-06-07 21:12:58 +02:00
Ilya Chernikov
abfda50077 Workaround URISyntaxException in tests on windows + JDK 6 2016-06-07 21:12:58 +02:00
Ilya Chernikov
0d7ecee6ee Update index on definition/import files changes 2016-06-07 21:12:57 +02:00
Ilya Chernikov
1a98c5eb0e Allow script dependnencies to be found as a candidates for decompilation 2016-06-07 21:12:56 +02:00
Ilya Chernikov
9ed8dec9fb Make a marker interface to allow ScriptDependenciesClassFilter to be used in the resolving 2016-06-07 21:12:55 +02:00
Ilya Chernikov
5c37017484 Prepare infrastruct for fixing customized script resolving
Move ConfigManager and ClassFinder to the idea-analysis
 Add (back) IndexableSetContributor
 Add a method in ConfigManager to generate all dependencies scope
 Add and use delegating scope with possibility to get base scope from it (used in the class finder)
2016-06-07 21:12:54 +02:00
Ilya Chernikov
3e17724e58 Implement class finder for customized scripts resolving - not yet completely functional 2016-06-07 21:12:54 +02:00
Ilya Chernikov
b63ed0f4aa Make script launcher aware of custom scripts, minor correction is core env 2016-06-07 21:12:53 +02:00
Ilya Chernikov
8ba9d2b75c minor: Fix daemon client diagnostic 2016-06-07 21:12:52 +02:00
Ilya Chernikov
06a586bb82 Add reading script configuration files on compilation 2016-06-07 21:12:51 +02:00
Ilya Chernikov
14ae795aaa Support extra imports configuration for scripts (only classpath so far) 2016-06-07 21:12:51 +02:00
Ilya Chernikov
57f03332c2 Add module dependencies to script module info 2016-06-07 21:12:50 +02:00
Ilya Chernikov
dfc96d216b Refactor configs loading, Add config script definitions reloading on config files changes 2016-06-07 21:12:49 +02:00
Ilya Chernikov
310e8014a8 Refactor KotlinScriptDefinitionProvider access to scriptDefinitions 2016-06-07 21:12:48 +02:00
Ilya Chernikov
f185d3639d Move KotlinScriptConfigurationManager to idea module 2016-06-07 21:12:48 +02:00
Ilya Chernikov
95703786ee Change error reporting for unresolved script definition types 2016-06-07 21:12:47 +02:00
Ilya Chernikov
3c18f98d3d Make variables replacements in classpath be able to work with lists 2016-06-07 21:12:46 +02:00
Ilya Chernikov
0921258e5d Add environment vars dictionary for classpath customization in script configs 2016-06-07 21:12:45 +02:00
Ilya Chernikov
339f945ce0 Implement searching for config files in th whole project directory tree 2016-06-07 21:12:45 +02:00
Ilya Chernikov
9273b0cd8d Add config loader from stream 2016-06-07 21:12:44 +02:00
Pavel V. Talanov
24b4afb3b8 Enable full highlighting in script files everywhere (was inside source roots only)
Extract KotlinHighlightingUtil to hold this logic
2016-06-07 21:12:43 +02:00
Pavel V. Talanov
34f8e9303f scopeUtils: support CustomizedScriptModuleInfo info in completion 2016-06-07 21:12:42 +02:00
Ilya Chernikov
834bb51643 Add tests with partial classpath for script compilation 2016-06-07 21:12:39 +02:00
Ilya Chernikov
9d9fe97a8e Refactor script configuration for better functionality separation 2016-06-07 21:11:30 +02:00
Ilya Chernikov
5590bcf024 Add initial prototype of custom script support in IDE 2016-06-07 21:11:29 +02:00
Ilya Chernikov
770ef16ef7 Replace script recognition from by PsiFile to by virtual file, fix custom script name generation 2016-06-07 21:11:28 +02:00
Ilya Chernikov
ad7fcc92d2 Add configurable script definition and appropriate manager component
The component is intended for configuring script types defined in some specific xml files and add appropriate script definitions to the provider
2016-06-07 21:11:27 +02:00
Ilya Chernikov
d225385d19 Add name and classpath to KotlinScriptDefinition 2016-06-07 21:11:26 +02:00
Ilya Chernikov
d63b53886c Convert KotlinScriptDefinitionProvider to kotlin - phase 2 - convert; related fixes and refactorings 2016-06-07 21:11:26 +02:00
Ilya Chernikov
b9836d8c87 Convert KotlinScriptDefinitionProvider to kotlin - phase 1 - rename 2016-06-07 21:11:25 +02:00
Ilya Chernikov
e1ca45f360 Add support for script base class with parameters
including possibility to describe which script params to pass to superclass
2016-06-07 21:11:24 +02:00
Ilya Chernikov
3c1503564e Add possibility to specify supertypes for script, with tests 2016-06-07 21:11:23 +02:00
Ilya Chernikov
670627ac4e Add helpers, compilation function and tests for passing classes as a parameters to a script 2016-06-07 21:11:23 +02:00
Ilya Chernikov
bd70481bea Convert ScriptTest to Kotlin - phase 2 - convert 2016-06-07 21:11:16 +02:00
Ilya Chernikov
0699293fb7 Convert ScriptTest to Kotlin - phase 1 - rename .java to .kt 2016-06-07 21:06:00 +02:00
Alexander Udalov
e3164119c1 Inline PrintingMessageCollector#PLAIN_TEXT_TO_SYSTEM_ERR
Otherwise 'hasErrors' flags was not cleared between subsequent runs of tests
which were using this message collector
2016-06-07 21:12:24 +03:00
Nikolay Krasko
c93d0f69ca Support Idea 163 branch 2016-06-07 19:18:55 +03:00
Kirill Rakhman
5c68681f96 Formatter: handle spaces before value arguments list (KT-12634)
#KT-12634 Fixed
2016-06-07 19:11:28 +03:00
Pavel V. Talanov
922dc85e11 Update changelog for 1.0.3 2016-06-07 17:08:13 +03:00
Alexey Tsvetkov
5e550a1280 Minor fixes of android test project 2016-06-07 16:51:17 +03:00
Jake Wharton
c199fd25e6 Add support for the Android test plugin.
#KT-11767 fixed
2016-06-07 16:51:17 +03:00
Dmitry Jemerov
060c285715 search for Kotlin convention usages of Java methods
#KT-5960 Fixed
2016-06-07 14:50:16 +02:00
Dmitry Jemerov
7e2ce2d4e0 when finding usages of parameter of annotation class primary constructor, search also for light method generated from that parameter
#KT-9399 Fixed
2016-06-07 14:50:09 +02:00
Alexey Tsvetkov
5161b6bfe0 Shade in kotlin-build-common-test 2016-06-07 14:42:42 +03:00
Alexey Tsvetkov
5fead88ced Shade in kotlin-android-extensions 2016-06-07 14:42:39 +03:00
Alexey Tsvetkov
23353facca Shade in kotlin-compiler-embeddable
Now kotlin gradle plugin is compatible with android gradle plugin 2.2

     #KT-12478 fixed
     #KT-12431 fixed
     #KT-12406 fixed
2016-06-07 14:42:35 +03:00
Alexey Tsvetkov
fd60ec4171 Set idea.io.use.nio2=true every build on windows
Otherwise (setting property once in static block) gradle daemon might clear system properties

     #KT-11770 fixed
2016-06-07 14:42:30 +03:00
Alexey Andreev
0e1dde022a KT-6942: in JS backed for value equalitity patterns in when generate structural equality check (i.e. Any.equals) instead of referential check (===).
(cherry picked from commit 97228e5)
2016-06-07 12:59:16 +03:00
Alexander Udalov
61290d1225 Temporarily disable inline for bound function references 2016-06-07 12:43:10 +03:00
Alexander Udalov
b9e61f035f Support bound callable references in codegen 2016-06-07 12:43:09 +03:00
Alexander Udalov
526a64dc36 Pass data flow info from '::' expressions, fix expected type 2016-06-07 12:43:07 +03:00
Alexander Udalov
d8db769823 Use empty list instead of ThrowingList in callable reference resolution
Clients of the call resolution do not expect to see a throwing list in call's
arguments, and it's wrong to make each of them check against the special case
that is the resolution of callable references

Fixes EA-69901
2016-06-07 12:42:45 +03:00
Alexander Udalov
e2d6e0cbab Propagate control flow to bound double colon expressions
"Unused expression" should be reported on unused double colon expressions, this
is postponed

 #KT-12551 Open
2016-06-07 12:42:42 +03:00
Alexander Udalov
0ce6bd9999 Ignore resolution to function without arguments on LHS of '::'
In the expression "Runnable::run" we were resolving the left-hand side to the
SAM constructor of Runnable. Now we detect this situation, ignore the result of
such resolution, and continue resolving the LHS as a type
2016-06-07 12:42:19 +03:00
Alexander Udalov
04c190231a Support bound references to objects and companion objects
Tweak member extension detection a little bit to prohibit extensions imported
from objects (they don't have one of the receiver parameters)
2016-06-07 12:41:30 +03:00
Alexander Udalov
d90b40c661 Use LanguageFeatureSettings instead of custom option for bound callable references 2016-06-07 12:41:29 +03:00
Alexey Andreev
7240a8df6c JS/Inliner: fix build 2016-06-07 12:18:23 +03:00
Alexey Andreev
b1fcad6dcc JS/Inlining: in RedundantStatementElimination remove unnecessary side effect check for binary expressions 2016-06-07 11:54:48 +03:00
Alexey Andreev
f0e64f8e38 JS/Inlining: rename IneffectiveStatementElimination to RedundantStatementElimination 2016-06-07 11:54:45 +03:00
Alexey Andreev
07d5a4506c JS/Inlining: minor improvements and clarifications after code review. Test whether expression without side effect does not prevent to relocate another expressions 2016-06-07 11:54:41 +03:00
Alexey Andreev
6b99d4e1c5 JS/Inlining: change sideEffects metadata to take three values: producing side effect, dependding on side effect and purity 2016-06-07 11:54:41 +03:00
Alexey Andreev
774efa4e70 JS/Inlining: improve test for removal of binary expresions without side effect, add tests for removal of a reference to a function parameter 2016-06-07 11:54:34 +03:00
Alexey Andreev
b395d40e97 JS/Inlining: refactor TemporaryVariableElimination 2016-06-07 11:54:31 +03:00
Alexey Andreev
0c0fc81e5f JS/Inlining: refactor IneffectiveStatementElimination 2016-06-07 11:54:28 +03:00
Alexey Andreev
d829bf4914 JS/Inlining: clarify why it's necessary to remove expression statements like a[b] 2016-06-07 11:54:23 +03:00
Alexey Andreev
57ac23a606 JS/Inlining: in temporary variable elimination don't treat FQN without side effects as trivial, i.e. disable moving these vars freely across function body 2016-06-07 11:54:20 +03:00
Alexey Andreev
878e95e040 JS/Inlining: minor simplifications after code review 2016-06-07 11:54:19 +03:00
Alexey Andreev
a26c09ae81 JS/Inlining: refactor TemporaryAssignmentElimination, add more tests 2016-06-07 11:54:12 +03:00
Alexey Andreev
b8b6999afc JS/Inlining: add test case for KT-10931 2016-06-07 11:54:12 +03:00
Alexey Andreev
5fdf7cbac9 JS/Inlining: minor code style fixes 2016-06-07 11:54:03 +03:00
Alexey Andreev
4783c9b612 JS/Inlining: in function call like fn() extract fn to a local variable, since fn can be access to property with side effects. Add tests to prove that evaluation order became proper in certain cases. Fix KT-11711, KT-7674, KT-7043 2016-06-07 11:54:02 +03:00
Alexey Andreev
c3d0fca92b JS/Inlining: mark closure constructors as free from side effects 2016-06-07 11:54:02 +03:00
Alexey Andreev
47cb0cde01 JS/Inlining: in temporary variable elimination improve moving of some expressions which are provably pure 2016-06-07 11:54:01 +03:00
Alexey Andreev
50aa1b271f JS/Inlining: when generating expression for default property accessor, mark this expression as side effect free, so optimizer has opportunity to move it 2016-06-07 11:53:56 +03:00
Alexey Andreev
96532f1fc2 JS/Inlining: fix broken evaluation order after applying temporary variable elimination 2016-06-07 11:52:58 +03:00
Alexey Andreev
ee6483b7ec JS/Inlining: in expression like f(g()), where *f* is inline, don't treat g() as a lambda constructor 2016-06-07 11:52:57 +03:00
Alexey Andreev
65876c36eb JS/Inlining: introduce removal of expression statements without side effects 2016-06-07 11:52:57 +03:00
Alexey Andreev
551ed28d84 JS/Inlining: introduce removal of unused variables 2016-06-07 11:52:56 +03:00
Alexey Andreev
776c7447b1 JS/Inlining: in temporary variable elimination introduce better recognition of FQNs without side effects 2016-06-07 11:52:56 +03:00
Alexey Andreev
c08e2e8ca0 JS/Inlining: always create temporary variables to alias expressions in following cases:
* when decomposing expression that contains inline calls, alias all subexpressions
* when substituting arguments to inline call
* for value returned from inline function.

Instead, rely on dedicated optimization pass. Improve lookup of function to inline, since the old one relied on immediate optimizations. Give more hints to optimizer.

This should make inlining more stable in different hard-to-reproduce corner cases with evaluation order.
2016-06-07 11:52:55 +03:00
Alexey Andreev
c11f2fe2d6 JS/Inlining: fix bug in temporary assignment elimination which causes excess removal of assignment statement. When there is a set of temporary variables that receive same value in different execution branches, remove them carefully so that at least one (and, preferably, at most) remains in each branch. 2016-06-07 11:52:55 +03:00
Dmitry Petrov
48c417285c LazyImportScope: accept TypeAliasDescriptor 2016-06-07 09:47:54 +03:00
Alexey Sedunov
fe01035e3c Rename: Do not rename ambiguous references in import directives
#KT-6363 Fixed
2016-06-06 21:29:23 +03:00
Alexey Sedunov
8ba1aff7e6 Rename: Show more detailed element descriptions in Rename dialog
#KT-8544 Fixed
2016-06-06 21:29:19 +03:00
Alexey Sedunov
9692c210fd Rename: Copy default values if function to be renamed inherits default values from some base function which is excluded from rename
#KT-9446 Fixed
2016-06-06 21:29:15 +03:00
Alexey Sedunov
188531017a Rename: Implement automatic renamer for test classes
#KT-8512 Fixed
2016-06-06 21:29:11 +03:00
Alexey Sedunov
42b71ae90c Rename: Do not show 'Rename overloads' options if target function has no
overloads. Consider extensions and members overloads if they have the same
recever class
 #KT-8541 Fixed
 #KT-8786 Fixed
2016-06-06 21:29:07 +03:00
Dmitry Petrov
9e7222906d Generate (possibly empty) file classes for files with type aliases. 2016-06-06 13:50:37 +03:00
Dmitry Petrov
872b3e8a52 DeclarationsChecker runs checks on type alias declarations.
TYPEALIAS_SHOULD_EXPAND_TO_CLASS diagnostics
(implemented for type aliases expanded to type parameters).
2016-06-06 13:50:37 +03:00
Dmitry Petrov
ea249244c5 'where' clause in type alias declaration is a syntax error
(type alias parameters can't have bounds)
2016-06-06 13:50:37 +03:00
Alexander Udalov
390b78b7f7 Minor, make CapturedParamInfo#skipInConstructor immutable 2016-06-06 13:26:31 +03:00
Alexander Udalov
b370ac0b37 Minor, delete CapturedParamOwner 2016-06-06 13:26:29 +03:00
Alexander Udalov
e148dcdee7 Cleanup inline codegen classes
Fix warnings, typos, formatting, break long lines, remove unused, add
nullability annotations, inline small methods used only once
2016-06-06 13:26:10 +03:00
Dmitry Jemerov
6a1ffc865d don't quote empty package name 2016-06-03 16:24:24 +02:00
Dmitry Petrov
7e64054af7 typeConstraintAdditionalResolve:
do not throw CCE for incorrect code with type parameter bounds on type alias parameters
2016-06-03 16:07:21 +03:00
Dmitry Petrov
aede318fd5 Protobuf diff: do not throw exception on TYPE_ALIAS_LIST 2016-06-03 16:07:21 +03:00
Dmitry Petrov
772fe5badb Treat unsupported or malformed type alias as a type alias with error types. 2016-06-03 16:07:20 +03:00
Dmitry Petrov
3500f5a96b Type alias: resolve type alias RHS during force-resolve. 2016-06-03 16:07:20 +03:00
Dmitry Petrov
df335b9e8d Type aliases: do not reparse RHS of type alias declaration in expanded type resolution 2016-06-03 16:07:20 +03:00
Dmitry Petrov
79ce614591 KT-11588 Type aliases: Fix EA-1117340 2016-06-03 16:07:20 +03:00
Dmitry Jemerov
8b30e7ef4e change implementation of 'new file' action to support escaping the package name and creating directory/package hierarchy
#KT-8362 Fixed
 #KT-11328 Fixed
2016-06-03 14:18:11 +02:00
Dmitry Jemerov
5f89274259 de-i18n 2016-06-03 14:18:11 +02:00
Dmitry Jemerov
28100be46b NewKotlinFileAction: J2K 2016-06-03 14:18:11 +02:00
Dmitry Jemerov
2ee03a71f9 NewKotlinFileAction: rename to .kt 2016-06-03 14:18:11 +02:00
Dmitry Jemerov
349376c4ec show new icon for Kotlin annotations in structure view (KT-12516) 2016-06-03 14:18:11 +02:00
Dmitry Jemerov
987b48dcfd can't close contents in Kotlin Bytecode toolwindow (KT-9797) 2016-06-03 14:18:11 +02:00
Mikhail Glukhikh
31cdc917d7 Source code cleanup: leaking this quick fixes applied 2016-06-03 14:46:11 +03:00
Mikhail Glukhikh
de3fbe38f1 KT-12152: quick fix "make final" for member / containing class 2016-06-03 14:46:07 +03:00
Mikhail Glukhikh
a22e7d3bcf KT-12152 : leaking this inspection: accessing non-final member / this in non-final class 2016-06-03 14:45:58 +03:00
Mikhail Glukhikh
3d6bd81933 KT-12152 : constructor consistency: non-final function calls 2016-06-03 09:45:52 +03:00
Mikhail Glukhikh
be40cf8138 KT-12152 : constructor consistency: distinguish properties with and w/o backing fields, with default / custom accessors 2016-06-03 09:45:49 +03:00
Mikhail Glukhikh
422ea4c6cb KT-12152 : constructor consistency: handle open property accessing 2016-06-03 09:45:45 +03:00
Mikhail Glukhikh
f7b5d67543 KT-12152 : constructor consistency: handle non-final classes 2016-06-03 09:45:41 +03:00
Mikhail Glukhikh
8e18165065 KT-12152 : constructor consistency analysis, base cases 2016-06-03 09:45:37 +03:00
Andrey Breslav
8544b9a1d6 Rule for function literals fixed: parameter types are allowed 2016-06-02 20:09:28 +03:00
Pavel V. Talanov
6ff0af1253 Update changelog for 1.0.3 2016-06-02 19:21:56 +03:00
Mikhael Bogdanov
092be8ca8e Don't generate unnecessary checkcast to java.lang.Number 2016-06-02 16:01:05 +03:00
Mikhael Bogdanov
a6cf169646 Fix for KT-12582: "VerifyError: Bad local variable type" caused by explicit loop variable type
#KT-12582 Fixed
2016-06-02 16:01:05 +03:00
Mikhael Bogdanov
e7f9d3417f Disabled several tests on android 2016-06-02 16:01:04 +03:00
Mikhael Bogdanov
c7d97c63a8 Small refactoring in constant processing 2016-06-02 16:01:03 +03:00
Alexey Sedunov
9b3f40ee76 Minor: Drop obsolete code 2016-06-02 15:28:36 +03:00
Alexey Sedunov
cf8cf37d69 Light Classes: Drop obsolete constraint which prevents generation of light methods for local class members
#KT-8892 Fixed
2016-06-02 15:28:34 +03:00
Alexey Sedunov
d27f3c0189 Rename: Do not replace Java references to synthetic component functions when renaming constructor parameter
#KT-9241 Fixed
2016-06-02 15:28:31 +03:00
Alexey Sedunov
958b402e42 Rename: Allow typing any identifier without backquotes in Rename dialog
#KT-9444 Fixed
2016-06-02 15:28:30 +03:00
Alexey Sedunov
96132fa61a Rename: @JvmName support
#KT-8044 Fixed
 #KT-9432 Fixed
2016-06-02 15:28:27 +03:00
Alexey Sedunov
ff4c16d342 Rename: Allow renaming class by constructor delegation call referencing primary constructor
#KT-8860 Fixed
2016-06-02 15:28:22 +03:00
Alexey Sedunov
e89e809dc7 Rename: Respect naming conventions in automatic variable rename
#KT-7851 Fixed
2016-06-02 15:28:19 +03:00
Alexey Sedunov
400d6b5aa0 Rename: Skip read-only declarations when renaming parameters
#KT-10713 Fixed
2016-06-02 15:28:16 +03:00
Alexey Sedunov
566ed0112f Rename: Fixed in-place rename of Kotlin expression referring Java declaration
#KT-9157 Fixed
2016-06-02 15:28:14 +03:00
Alexey Sedunov
691de677b3 Rename: Quote non-identifier names in Kotlin references
#KT-9156 Fixed
2016-06-02 15:28:11 +03:00
Alexey Sedunov
a743098aba Refactoring: Move quoteIfNeeded function to idea-core 2016-06-02 15:28:09 +03:00
Nikolay Krasko
3f4cde3d25 NoSuchFieldError in Evaluate Expression on a property of a derived class (KT-12206)
#KT-12206 Fixed
2016-06-02 14:39:51 +03:00
Nikolay Krasko
2c6d28c65f Refactoring: use drop instead subList 2016-06-02 14:38:47 +03:00
Nikolay Krasko
9ef0bf422c Minor: reveal nullability problem in generateSyntheticParts() 2016-06-02 14:38:46 +03:00
Nikolay Krasko
a6b16f6d00 Move uast dependency modules before idea module that now contains uast too. 2016-06-02 14:38:44 +03:00
Kirill Rakhman
c24960f8d9 Formatter: handle spaces between class name and type parameters (#875)
Fixes #KT-12446
2016-06-01 21:20:56 +03:00
Mikhail Glukhikh
33b6780ce2 Quick fix "add !!" for SMARTCAST_IMPOSSIBLE in certain situations 2016-06-01 19:48:26 +03:00
Alexander Udalov
7eafae1936 Drop isAbsoluteInRootPackage from stubs 2016-06-01 19:30:04 +03:00
Alexander Udalov
1339286261 Drop undocumented absolute name specification feature with 'package.' 2016-06-01 19:30:03 +03:00
Mikhail Glukhikh
9f819b1c03 Convert to expression body: take nested whens into account 2016-06-01 16:19:55 +03:00
Mikhail Glukhikh
2350caf177 Convert to expression body is forbidden on single non-exhaustive when statement with Unit result #KT-12502 Fixed 2016-06-01 16:02:15 +03:00
Mikhail Glukhikh
91ce8cc612 "Make abstract" is no longer applicable to object / enum entry members #KT-3797 Fixed 2016-06-01 16:02:11 +03:00
Dmitry Petrov
bce96baf20 KT-11588 Type aliases
- Fix ISE in LazyDeclarationResolver
2016-06-01 14:32:46 +03:00
Dmitry Petrov
0319d5a5aa KT-11588 Type aliases
- Nested type aliases
- UNSUPPORTED_TYPEALIAS error (language level < 1.1)
- tests for is/as/as? with type alias
2016-06-01 14:32:46 +03:00
Dmitry Petrov
e979300579 KT-11588 Type aliases
Diagnostics for type arguments substitution in type alias expansion
(initial implementation; TODO: refactor).
2016-06-01 14:32:46 +03:00
Dmitry Petrov
9cf8ef287e KT-11588 Type aliases
Additional tests for generic type alias arguments.
Small refactoring in TowerLevels.
2016-06-01 14:32:45 +03:00
Dmitry Petrov
62f8d00f89 KT-11588 Type aliases
Create substituted constructor descriptors for generic type aliases.
2016-06-01 14:32:45 +03:00
Dmitry Petrov
c63166047c KT-11588 Type aliases
Additional tests for type alias constructor & companion object:
- codegen
- error diagnostics
2016-06-01 14:32:45 +03:00
Dmitry Petrov
1329a43d89 KT-11588 Type aliases
Type alias constructor
2016-06-01 14:32:44 +03:00
Dmitry Petrov
4a9507b3ab KT-11588 Type aliases
Type alias companion object
2016-06-01 14:32:44 +03:00
Dmitry Petrov
8c2e80f9eb KT-11588 Type aliases
Fix protoDifferenceUtils.
2016-06-01 14:32:44 +03:00
Mikhael Bogdanov
0f1589fd50 Fix for KT-12200: initial property assignment ignored
#KT-12200 Fixed
2016-05-31 15:27:55 +03:00
Mikhael Bogdanov
bdc0b6b308 Local delegated properties moved to language feature option 2016-05-31 15:27:55 +03:00
Alexey Andreev
2bd807bb4e KT-11960: add test for case of instantiating inner class of a local class 2016-05-31 15:24:30 +03:00
Alexey Andreev
acc5303731 KT-11960 Fix case of instantiation of local class via its inner class or via nested lambda. Move tests to more appropriate location. Fix bug in blackbox codegen generator for JVM, which does not allow to suppress tests. 2016-05-31 15:24:29 +03:00
Alexey Andreev
bb8a3aa262 KT-11960 Minor code style fixes 2016-05-31 15:24:29 +03:00
Alexey Andreev
6f363a71be KT-11960 Fix for data classes 2016-05-31 15:24:29 +03:00
Alexey Andreev
170a671a1b KT-11960 Fix for case when class instantiates itself 2016-05-31 15:24:28 +03:00
Alexander Udalov
a300dee61f Keep Native2AsciiCharsetProvider from being stripped by proguard
#KT-12549 Fixed
2016-05-31 14:28:25 +03:00
Kirill Rakhman
93ebb3da65 Formatter: handle spaces around 'is' keyword (#874)
Fixes #KT-12548
2016-05-30 20:35:33 +03:00
Alexander Udalov
fbd671c158 Minor, update ChangeLog with '-language-version' 2016-05-30 13:52:04 +03:00
Mikhail Glukhikh
7a24429b53 Simplify for intention: apply name validator to prevent conflicts 2016-05-30 12:15:13 +03:00
Mikhail Glukhikh
792b37bce4 Simplify for intention: applicable of any numbers of properties used #KT-10779 Fixed 2016-05-30 12:15:09 +03:00
Alexander Udalov
68c5e8e190 Minor, add comments on declarations used in Eclipse plugin 2016-05-27 19:40:50 +03:00
Alexander Udalov
a95568eedf Minor, make Services#get return type nullable 2016-05-27 19:40:50 +03:00
Alexander Udalov
57849c9dfd Fix project compilation after introduction of bound references
`java` in the package name inside an extension to KClass is now resolved to the
extension property `KClass#java`. So `java.X::class` is now equivalent to
`this.java.X::class`
2016-05-27 19:38:39 +03:00
Mikhail Glukhikh
c26d7e0eba Attach "add remaining branches" and "add else branch" fixes to NON_EXHAUSTIVE_WHEN warning #KT-12503 Fixed 2016-05-27 18:08:20 +03:00
Mikhail Glukhikh
8713190e33 Back-end JVM: more accurate handling of when expressions with Unit result #KT-12192 Fixed 2016-05-27 18:08:15 +03:00
Pavel V. Talanov
3a3e145de2 KtLightMethod: Wrap return type so it resolves to light method's type parameter as opposed to delegate's
Affects java type inference in IDEA

  #KT-12090 Fixed
  #KT-11095 Fixed
2016-05-27 13:13:01 +03:00
Alexander Udalov
e1a21abd72 Report error on bare types in LHS of callable reference expressions 2016-05-26 22:22:41 +03:00
Alexander Udalov
76efeb4e14 Remove obsolete assertion about expressions on LHS of '::' 2016-05-26 22:22:41 +03:00
Alexander Udalov
da42023dd9 Support new callable reference expressions in UAST
Manually mute the class literal test in apiCheck.kt; support for new class
literal expressions is postponed because it's not straightforward to combine
both unbound (Type::class) and bound (instance::class) class literals in one
UClassLiteralExpression: in Java they're two very different expressions
(Type.class and instance.getClass())
2016-05-26 22:22:41 +03:00
Alexander Udalov
ca76e4d426 Support new double colon expressions in IDE code 2016-05-26 22:22:41 +03:00
Alexander Udalov
a3b38cf6ed Extract method to fully or partially resolve callable reference
Reuse it in the main type-checking path in DoubleColonExpressionResolver, as
well as in ArgumentTypeResolver which handles the case when a callable
reference appears as an argument to another call
2016-05-26 22:22:41 +03:00
Alexander Udalov
693c753988 Support for new double colon expressions in type checker
Despite the fact that the LHS of a double colon expression is now KtExpression
instead of KtUserType, we must still consider it a type for callable references
to work. Extract and reuse relevant parts of QualifiedExpressionResolver and
TypeResolver to support this behavior
2016-05-26 22:22:41 +03:00
Alexander Udalov
b5388d6a43 Parse expressions on LHS of '::'
See https://github.com/Kotlin/KEEP/issues/5
2016-05-26 22:22:41 +03:00
Alexander Udalov
7cb61b81ab Minor, capitalize language feature names in tests
To simplify textual search across the codebase
2016-05-26 22:21:22 +03:00
Pavel V. Talanov
76971eca70 Refactor LanguageFeatureSettings: Add LanguageVersion and LanguageFeature entities 2016-05-26 22:16:47 +03:00
Alexander Udalov
9bdf8f1082 Minor, update javac2 annotation filter for kotlin-build-common-test 2016-05-26 22:15:39 +03:00
Alexander Udalov
2c516f18a0 Add tests on "-language-version" usage from Ant, Maven, Gradle 2016-05-26 22:15:39 +03:00
Alexander Udalov
bc5202a4d7 Validate "-language-version" argument value, add tests 2016-05-26 22:15:39 +03:00
Alexander Udalov
331a6ee414 Use LanguageFeatureSettings instead of JVM option for top level sealed classes 2016-05-26 22:15:39 +03:00
Alexander Udalov
98c3e030a1 Support enabling/disabling language features in diagnostic tests 2016-05-26 22:15:39 +03:00
Alexander Udalov
e1ba4480d7 Support "-language-version" CLI option for compatibility with older releases
Introduce LanguageFeatureSettings, instance of which should be injected by the
container and be accessible everywhere during the compilation (front-end and
back-end).

Parameters of LanguageFeatureSettings are unused in this commit, will be used
later
2016-05-26 22:15:39 +03:00
Alexey Sedunov
ec0f21c887 Spring Support: Fixed rename of custom-named beans specified with Kotlin annotation
#KT-12096 Fixed
2016-05-26 20:59:09 +03:00
Alexey Sedunov
076e31c0f8 Spring Support: Automatic configuration by @Import and @ComponentScan ("basePackages"/"basePackageClasses")
#KT-12135 Fixed
 #KT-12139 Fixed
2016-05-26 20:59:07 +03:00
Alexey Sedunov
781a1e0694 Spring Support: Implement @ComponentScan inspection
#KT-12465 Fixed
2016-05-26 20:59:05 +03:00
Alexey Sedunov
d69140b7fe Code Insight: Implement package references inside of string literals
#KT-12136 In Progress
2016-05-26 20:59:03 +03:00
Alexey Sedunov
d52e62b20d Light Classes: Consider FakeFileForLightClass instances equivalent if they correspond to the light classes with common KtFile
#KT-12117 Fixed
2016-05-26 20:59:01 +03:00
Alexander Udalov
9a762e0fa2 Prevent META-INF/INDEX.LIST from jsr166e.jar to be packed into compiler
INDEX.LIST contains a list of jars with the information about what packages
does each of those jars have (this feature is called JarIndex, see
http://docs.oracle.com/javase/7/docs/technotes/guides/jar/jar.html). In case of
ideaSDK/core/jsr166e.jar, it only has one entry -- jsr166e.jar itself. When the
compiler is started, the class loading mechanism reads this file and assumes
that there are no other jars nearby. But the compiler depends on other jars,
namely kotlin-runtime.jar and kotlin-reflect.jar, thus we get
ClassNotFoundException when trying to load almost any Kotlin bytecode from
kotlin-compiler.jar.

Note that, fortunately, release builds are not affected because:
1) proguard helpfully strips this file from the final kotlin-compiler.jar;
2) we use a custom class loader (Preloader) which ignores JarIndex.
This only affects local setup with proguard disabled, where one test
(CompilerDaemonTest) was failing because it was trying to invoke the compiler
directly via "java -jar ..."

To implement this, it was necessary to exclude this one file from the compiler
jar, however the "zipgroupfileset" Ant task does not support exclusion of one
file from a particular archive, so we pack all idea core libraries into one jar
beforehand and use "zipfileset" which supports exclusion of one file
(http://stackoverflow.com/a/2426245/288456).

(cherry picked from commit c3f1afee626502470dbe27a1343c777e5cade789)
2016-05-26 14:14:41 +03:00
Alexander Udalov
e5d64d316d Fix kotlin-maven-plugin compilation 2016-05-26 14:14:17 +03:00
Alexander Udalov
d89e907f00 Minor, comment out ignored test 2016-05-26 11:48:00 +03:00
Alexander Udalov
159d88102f Use MODULE_NAME configuration key in JS instead of MODULE_ID 2016-05-26 11:47:30 +03:00
Alexander Udalov
05f8836f46 Move some configuration keys to JVM or to CommonConfigurationKeys
Move CONTENT_ROOTS and SCRIPT_DEFINITIONS_KEY to JVMConfigurationKeys because
they are only used on JVM, rename the latter to SCRIPT_DEFINITIONS.

Move MODULE_NAME to CommonConfigurationKeys to be combined with MODULE_ID in
JSConfigurationKeys in the future
2016-05-26 11:47:30 +03:00
Alexander Udalov
6674412079 Rename compilerConfigurationForTests -> newConfiguration 2016-05-26 11:47:30 +03:00
Alexander Udalov
d04624cfe9 Minor, refactor KotlinToJVMBytecodeCompiler#compileModules 2016-05-26 11:47:30 +03:00
Alexander Udalov
cad4b6973c Introduce and use JSConfigurationKeys similar to JVMConfigurationKeys
Use type-safe keys in CompilerConfiguration instead of multiple parameters,
duplicated in the base class (JsConfig), derived class (LibrarySourcesConfig)
and its builder (LibrarySourcesConfig.Builder)
2016-05-26 11:47:30 +03:00
Alexander Udalov
b65980f3b7 Drop JsConfig#inlineEnabled flag
Use CommonConfigurationKeys#DISABLE_INLINE flag (moved from
JVMConfigurationKeys) in CompilerConfiguration instead, similarly to the JVM
compiler
2016-05-26 11:47:30 +03:00
Alexander Udalov
6889bdbef8 Add CompilerConfiguration to JsConfig
Will be used to store common compiler options (such as source version, inline
disabled, etc) as well as JS-specific options, to unify the logic of compiler
option initialization between JS and JVM compilers
2016-05-26 11:47:30 +03:00
Alexander Udalov
116e4a5ced Rename Config -> JsConfig 2016-05-26 11:47:30 +03:00
Alexander Udalov
2bd3211ba8 Get rid of unnecessary exceptions in JS translator
Before this commit, an internal error during JS translation resulted in the
actual exception wrapped in TranslationRuntimeException wrapped in
TranslationInternalException wrapped in RuntimeException being thrown. This
change gets rid of the two latter wrappings.

Also delete unthrown MainFunctionNotFoundException and related unused
constructors in TranslationException
2016-05-26 11:47:30 +03:00
Alexander Udalov
9418311bda Pass CompilerConfiguration to CLICompiler#doExecute
Extract common CompilerConfiguration setup code to a separate method
2016-05-26 11:47:30 +03:00
Alexander Udalov
3c81bb4bfc Add MessageCollector#hasErrors, get rid of MessageSeverityCollector
Also fix duplicated wrapping of a message collector into a message severity
collector (in CLICompiler and in the beginning of doExecute in
K2JVMCompiler/K2JSCompiler)
2016-05-26 11:47:30 +03:00
Alexander Udalov
c5e2f55ea7 Get rid of getModuleName(), pass configuration to createContextWithSealedModule
Add KotlinTestUtils.newConfiguration() which creates a configuration and sets
the module name to the default test one ("test-module")
2016-05-26 11:47:30 +03:00
Alexander Udalov
69343549b7 Move TEST_MODULE_NAME to KotlinTestUtils and change value to "test-module"
This name is more generic and thus can be used everywhere, not only in Java
integration tests
2016-05-26 11:47:30 +03:00
Alexander Udalov
3ca77de924 Remove traces of old compiler plugin architecture
It was retired with the deprecation and subsequent removal of the old KDoc, and
is now unused
2016-05-26 11:47:30 +03:00
Alexander Udalov
0fe39a186e Simplify public methods of KotlinToJVMBytecodeCompiler
Pass as much as possible in the single CompilerConfiguration instance instead
of in separate function parameters. Add corresponding keys to
JVMConfigurationKeys.

Re changes in compileModules: since output directory (stored now under the key
OUTPUT_DIRECTORY) is different for each module, the configuration of the whole
project is no longer applicable when compiling individual modules. Thus we copy
the project configuration for each module and add the output directory value
2016-05-26 11:47:30 +03:00
Alexander Udalov
8c0f78db50 Introduce CompilerConfiguration#getNotNull and getBoolean
To reduce boilerplate at call sites
2016-05-26 11:47:30 +03:00
Alexander Udalov
81a0fa5f47 Minor, fix warnings and improve style in KotlinToJVMBytecodeCompiler 2016-05-26 11:47:30 +03:00
Dmitry Jemerov
495a3e9432 cleanup after code review 2016-05-25 21:05:59 +02:00
Dmitry Jemerov
b37ac4f783 fix PsiCheckerTestGenerated according to removed "property with backing field" highlighting 2016-05-25 20:10:01 +02:00
Dmitry Jemerov
14559bfae0 inherit Kotlin TYPE_PARAMETER from Java TYPE_PARAMETER
#KT-11465 Fixed
2016-05-25 20:00:49 +02:00
Dmitry Jemerov
76178c531e specify base color for ANNOTATION and LABEL
#KT-9410 Fixed
2016-05-25 20:00:49 +02:00
Dmitry Jemerov
49335fa6eb highlight infix function calls
#KT-6540 Fixed
2016-05-25 20:00:49 +02:00
Dmitry Jemerov
a448af5d17 remove CLASS highlight on top of CONSTRUCTOR_CALL for constructor calls
#KT-2919 Fixed
2016-05-25 20:00:49 +02:00
Dmitry Jemerov
e7cb256e81 TypeKindHighlightingVisitor: J2K 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
e07e16abf6 TypeKindHighlightingVisitor: rename to .kt 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
e9cefd9ece remove PARAMETER highlight on top of INSTANCE_PROPERTY for primary constructor parameters 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
b51637d49f remove LOCAL_VARIABLE highlight on top of BACKING_FIELD_VARIABLE 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
4261e4a5cc VariablesHighlightingVisitor: cleanup after J2K 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
77a48c1d10 VariablesHighlightingVisitor: J2K 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
4ddbe9828a VariablesHighlightingVisitor: rename to .kt 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
c7cd86f1ed PropertiesHighlightingVisitor: cleanup after J2K, remove "property has backing field" highlighting, don't layer other highlights 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
b76585e03f PropertiesHighlightingVisitor: j2K 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
41cd55b281 PropertiesHighlightingVisitor: rename to .kt 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
5512043ed4 FunctionsHighlightingVisitor: cleanup after J2K, remove overlaid highlighting of function calls 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
c515740e38 FunctionsHighlightingVisitor: J2K 2016-05-25 20:00:49 +02:00
Dmitry Jemerov
83b5028ac2 FunctionsHighlightingVisitor: rename to .kt 2016-05-25 20:00:49 +02:00
Ilya Gorbunov
9c91b120c9 Force garbage finalization and another gc run in gradle tests. 2016-05-25 17:12:46 +03:00
Dmitry Jemerov
855ddf96fd Kotlin with Gradle: generate 'repositories' call, use kotlin_version property
#KT-11841 Fixed
2016-05-25 15:41:25 +02:00
Dmitry Jemerov
636bbd026c test for KT-9454 2016-05-25 15:41:25 +02:00
Dmitry Jemerov
ccbb3d055b call BuildManager.clearState(project) in apply() method of Kotlin Compiler Settings configurable
#KT-10255 Fixed
2016-05-25 15:41:25 +02:00
Dmitry Jemerov
1865750606 add icon for Kotlin annotation classes
#KT-11814 Fixed
2016-05-25 15:41:25 +02:00
Dmitry Jemerov
22d378997c always show current plugin version in update check dialog
#KT-12076 Fixed
2016-05-25 15:41:25 +02:00
Dmitry Jemerov
b8eb1dae2b "Configure Kotlin plugin updates" is a dumb-aware action
#KT-12075 Fixed
2016-05-25 15:41:25 +02:00
Dmitry Jemerov
83798f54c1 help ID for compiler configuration page
#KT-12110 Fixed
2016-05-25 15:41:25 +02:00
Dmitry Jemerov
e920c35883 remove unnecessary ? from 'serr' live template
#KT-12289 Fixed
2016-05-25 15:41:25 +02:00
Stanislav Erokhin
4b9aac6318 Replace not debug usages of DescriptorRenderer.DEBUG_TEXT to DescriptorRenderer.FQ_NAMES_IN_TYPES. 2016-05-25 16:31:34 +03:00
Pavel V. Talanov
710e920df7 lightClassUtils: Fix CCE when trying to obtain KtLightTypeParameter
#KT-12259 Fixed
2016-05-25 15:58:11 +03:00
Pavel V. Talanov
62421bbf7b 'const val' are now considered constants by Java in IDEA
#KT-12026 Fixed
2016-05-25 15:58:09 +03:00
Pavel V. Talanov
3cb38e7f02 Implement getLanguageLevel for FakeFileForLightClass
#KT-12006 Fixed
2016-05-25 15:58:07 +03:00
Pavel V. Talanov
695653c447 Replace usages of blocking lazy to LazyThreadSafetyMode.PUBLICATION in light classes to prevent potential deadlocks 2016-05-25 15:44:19 +03:00
Pavel V. Talanov
65e55f045f Fix deadlock: synchronized lazy in KtLightModifierListWithExplicitModifiers 2016-05-25 15:44:18 +03:00
Alexander Udalov
7fd2a016e7 Fix Android codegen tests: use full JDK only when needed
This was accidentally broken in 8a00cabce6
2016-05-25 10:29:50 +03:00
Pavel V. Talanov
85200e1f8a REPL UI: fix history pane not showing latest command after command execution 2016-05-24 17:33:24 +03:00
Nikolay Krasko
181a11a1d7 Update to idea 2016.1.2 2016-05-24 17:22:56 +03:00
Nikolay Krasko
eee9431a6d More write action requirement remove
Workaround for exception: Refactorings should not be started inside write action because they start progress inside and any read action from the progress task would cause the deadlock
2016-05-24 17:22:56 +03:00
Nikolay Krasko
98060d28a8 Don't request write action for ChangeParameterTypeFix because it's based on refactoring
Workaround for exception: Refactorings should not be started inside write action because they start progress inside and any read action from the progress task would cause the deadlock
2016-05-24 17:22:56 +03:00
Nikolay Krasko
e3f85653e9 Don't request write action for RemoveUnusedFunctionParameterFix because it's based on refactoring (KT-12440)
Workaround for exception: Refactorings should not be started inside write action because they start progress inside and any read action from the progress task would cause the deadlock

 #KT-12440 Fixed
2016-05-24 17:22:56 +03:00
Nikolay Krasko
01a6ce930e Don't request write action for ReplaceExplicitFunctionLiteralParamWithItIntention because it's based on refactoring (KT-12436)
Workaround for exception: Refactorings should not be started inside write action because they start progress inside and any read action from the progress task would cause the deadlock

 #KT-12436 Fixed
2016-05-24 17:22:56 +03:00
Pavel V. Talanov
6b001c608b ProjectRootsUtil: accept directories and jar roots if "includeClassFiles == true" 2016-05-24 15:42:11 +03:00
Pavel V. Talanov
c7cefad7d5 Implement IdeReplCompletionTest to test completion of entities declared in already evaluated lines 2016-05-24 15:42:09 +03:00
Pavel V. Talanov
f59638d60f Minor: prettify ReplState 2016-05-24 15:42:08 +03:00
Pavel V. Talanov
9cff590366 Use ReplState to implement completion in IDE REPL
Consider sucessfully evaluated lines as previous lines when analyzing console file
2016-05-24 15:42:06 +03:00
Pavel V. Talanov
08ef1749b6 Limit resolve scope when completing in module sources 2016-05-24 15:42:04 +03:00
Pavel V. Talanov
4ec4d6ec66 implicitReceiversUtils: Script descriptors are implicit receivers
This fixes completion in repl
2016-05-24 15:42:02 +03:00
Pavel V. Talanov
dcd7e6d767 Move ReplState to frontend 2016-05-24 15:42:00 +03:00
Pavel V. Talanov
4d75355cf2 Minor: Rename KotlinReplTest 2016-05-24 15:41:58 +03:00
Pavel V. Talanov
5058e9b4e6 Fix import resolution in Repl
#KT-11428 Fixed

 Refactor ReplState to be a component
2016-05-24 15:41:56 +03:00
Pavel V. Talanov
9f67072098 Minor: ScopeUtils: avoid wrapping lexical scopes several times 2016-05-24 15:41:55 +03:00
Pavel V. Talanov
27bd74f4c5 Refactor: replace LastLineScopeProvider with ReplState, extract FileScopeFactory from FileScopeProviderImpl 2016-05-24 15:41:30 +03:00
Pavel V. Talanov
3b4ade2ca0 Refactor: extract resolve related code from ReplInterpreter to CliReplAnalyzerEngine 2016-05-24 15:36:12 +03:00
Alexander Udalov
68f1cf5f52 Fix typo in inspection description name: RedundantlIf.html -> RedundantIf.html 2016-05-24 15:03:04 +03:00
Mikhail Glukhikh
9e487a6326 Minor refactoring: convert to block body 2016-05-24 14:31:51 +03:00
Mikhail Glukhikh
fa5e284bf8 Convert to block body: when expression with Unit result is now handled as "return needed" #KT-12193 Fixed 2016-05-24 14:29:01 +03:00
Mikhail Glukhikh
9a69b8b7b5 REDUNDANT_OPEN_FOR_INTERFACE warning: reported for open members without implementation #KT-12452 Fixed 2016-05-24 14:25:27 +03:00
Mikhail Glukhikh
e66acd8101 Default modality is abstract for interface. REDUNDANT_MODIFIER_FOR_TARGET applicability reduced #KT-12302 Fixed 2016-05-24 14:25:22 +03:00
Mikhail Glukhikh
93defed324 KT-12302: ABSTRACT_MODIFIER_IN_INTERFACE warning is removed as obsolete 2016-05-24 14:25:18 +03:00
Dmitry Jemerov
3542834fa1 fix tests for RedundantIfInspection 2016-05-23 20:21:46 +02:00
Vladislav Golub
bb32c2d350 KT-12019 Highlighting of redundant 'if' statements (#871) 2016-05-23 21:02:38 +03:00
Vladislav Golub
cf56ac0305 Simplify method (#873) 2016-05-23 20:53:42 +03:00
Alexander Udalov
5bf14c106a Delete unused ParentLastURLClassLoader 2016-05-23 20:00:51 +03:00
Alexander Udalov
b9fb6c0d84 Remove dangerous readKotlinHeader() in inlineUtil.kt
It was creating a phantom FileBasedKotlinClass which was not based on any file
2016-05-23 20:00:50 +03:00
Alexander Udalov
cf19166eca Move IC-related initialization logic to GenerationState
To further reduce number of parameters of GenerationState's constructor
2016-05-23 14:50:06 +03:00
Alexander Udalov
29c5e655ab Drop several more parameters of GenerationState's constructor
INCREMENTAL_COMPILATION_COMPONENTS and DECLARATIONS_JSON_PATH are already in
the configuration, and Progress was unused
2016-05-23 14:50:06 +03:00
Alexander Udalov
f8816b5d67 Pass CompilerConfiguration to GenerationState instead of ton of parameters 2016-05-23 14:49:26 +03:00
Alexander Udalov
1492c71e88 Refactor old test utility in LoadDescriptorUtil
Also make USE_TYPE_TABLE a flag in CompilerConfiguration instead of an extra
boolean parameter in numerous methods
2016-05-23 14:47:00 +03:00
Alexander Udalov
76d78ba666 Remove LazyResolveTestUtil, refactor usages to use JvmResolveUtil
LazyResolveTestUtil.resolve by now had almost exactly the same code as
JvmResolveUtil.analyze.

LazyResolveTestUtil.resolveLazily with 3 parameters was only used in
LoadBuiltinsTest, inline it there.

Move LazyResolveTestUtil.getTopLevelPackagesFromFileList to
AbstractDiagnosticsTest, the only place where it was used
2016-05-23 14:47:00 +03:00
Alexander Udalov
a85e98a078 Minor, inline unnecessary method of TopDownAnalyzerFacadeForJVM
The TopDownAnalysisMode parameter was TopLevelDeclarations everywhere
2016-05-23 14:47:00 +03:00
Alexander Udalov
0124cb64f0 Cleanup test utilities in JvmResolveUtil and GenerationUtils
Simplify usages and fix some warnings along the way.

Rename:
- analyzeFilesWithJavaIntegration, analyzeOneFileWithJavaIntegration -> analyze
- analyzeFilesWithJavaIntegrationAndCheckForErrors,
  analyzeOneFileWithJavaIntegrationAndCheckForErrors -> analyzeAndCheckForErrors
- compileFilesGetGenerationState, compileManyFilesGetGenerationStateForTest ->
  compileFiles
- compileFileGetGenerationStateForTest -> compileFile
- compileFileGetClassFileFactoryForTest -> compileFileTo
2016-05-23 14:47:00 +03:00
Alexander Udalov
8a00cabce6 Minor, do not copy CompilerConfiguration in Android codegen tests
This is needed to avoid passing a custom configuration to
GenerationUtils.compileManyFilesGetGenerationStateForTest, but rather take it
from the environment in a future commit
2016-05-23 14:47:00 +03:00
Alexander Udalov
6d6488e795 Pass CompilerConfiguration to TopDownAnalyzerFacadeForJVM
In most cases, the configuration can be loaded from KotlinCoreEnvironment. In
other cases, such as IDE tests, there's no environment, so we pass EMPTY. Since
currently the configuration is only used to load incremental compilation
components and module information, it's fine to pass EMPTY
2016-05-23 14:47:00 +03:00
Alexander Udalov
6c0ff40197 Move JVMConfigurationKeys to frontend.java
Similarly to K2JVMCompilerArguments, they will soon be needed in the IDE code.
Move COMPILER_JAR_LOCATOR to CLIConfigurationKeys because it's used both in JVM
and JS, and only in CLI. Other keys, non-relevant in the IDE, may be moved out
soon as well, such as incremental compilation components
2016-05-23 14:47:00 +03:00
Alexander Udalov
dcb2d7b4f6 Minor, break the line in "kotlinc -help" if it's too long
To improve description of the "pluginOptions" flag
2016-05-23 14:47:00 +03:00
Mikhail Glukhikh
1a8181bdc4 Only private constructors for sealed / enum classes #KT-12377 Fixed
Also #KT-8497 Fixed
2016-05-23 13:08:57 +03:00
Mikhail Glukhikh
cffdce908e Annotation parameters now cannot be mutable #KT-12367 Fixed 2016-05-23 13:04:00 +03:00
Alexey Andreev
81bdd6b4bb JS: improve performance of Hashtable-based collections 2016-05-23 12:23:27 +03:00
Alexey Andreev
f0ee52faaf KT-11086 Treat initializer of a companion object as a class initializer 2016-05-23 12:22:50 +03:00
Alexey Andreev
c5eaea846d KT-7424: add test to show that inlining works for anonymous functions 2016-05-23 12:22:50 +03:00
Alexey Andreev
db5baf7fa7 KT-8386: pass mutable list to JsInvocation from intrinsic generator, so that inliner had a chance to replace arguments 2016-05-23 12:22:50 +03:00
Pavel V. Talanov
d03fedde74 Implement "Decompile Kotlin to Java" action
Add this action to "Attach sources" notification panel if present
 #KT-11657 Fixed
2016-05-23 12:12:13 +03:00
Pavel V. Talanov
68dd176d66 Minor: typo in changeLog 2016-05-23 11:54:16 +03:00
Pavel V. Talanov
6e9a35b432 Minor, missed '#' 2016-05-23 11:54:14 +03:00
Pavel V. Talanov
7606b4c69d Update ChangeLog for 1.0.3
Improve ticket number presentation for 1.0.3
2016-05-23 11:54:12 +03:00
Dmitry Petrov
968ed3f091 KT-5068: Introduce a special diagnostic message for TYPE_MISMATCH cases such as 'fun f(): Int = { 1 }'. 2016-05-23 09:50:41 +03:00
Nikolay Krasko
8b06d919b4 Restore packing plugin-api module output to plugin 2016-05-20 19:40:07 +03:00
Nikolay Krasko
58d24d76c4 Check there's no direct usages of asm (org.objectweb.asm) library in project
Such usages should be replaced with asm from idea (org.jetbrains.org.objectweb.asm)
2016-05-20 15:51:57 +03:00
Nikolay Krasko
a801d8fa6f Don't use reference to asm directly. Use asm from Idea instead. 2016-05-20 15:51:55 +03:00
Nikolay Krasko
4e0d4681ed Remove kotlin-for-upsource target. Upsource doesn't use this artifact anymore. 2016-05-20 15:51:54 +03:00
Stanislav Erokhin
db64d9c528 Fixed visibility checks for annotation usage on top-level declarations
#KT-12429 Fixed
2016-05-20 14:58:18 +03:00
Stanislav Erokhin
a42b8d56b4 Minor. Removed redundant field for several anonymous objects. 2016-05-20 14:58:18 +03:00
Alexander Udalov
b5355358a5 Remove SAFE_CALL_IN_QUALIFIER diagnostic which was never reported
See UNEXPECTED_SAFE_CALL which is reported instead
2016-05-20 14:53:07 +03:00
Alexander Udalov
ca7e4496c7 Refactor and improve class literal type checking code
Infer something sensible instead of error types when an error is reported, such
as absence of a type argument for Array or presence of type arguments for other
types
2016-05-20 14:53:07 +03:00
Alexander Udalov
1b79770121 Do not produce trailing space when rendering root package header 2016-05-20 14:53:07 +03:00
Dmitry Petrov
dd12c018ca KT-8990: private member can't be overridden, even if it is visible in the current context 2016-05-20 14:32:48 +03:00
Dmitry Petrov
15c47ead97 (minor) KT-11588 Type aliases: fix conflicts after rebase. 2016-05-20 14:17:26 +03:00
Dmitry Petrov
a2ec580119 KT-11588 Type aliases
Type alias stubs indexing (required for index-based declaration providers)
2016-05-20 14:17:26 +03:00
Dmitry Petrov
8bf87a9a4f KT-11588 Type aliases
Proper abbreviated type for '<type-alias>?'
2016-05-20 14:17:26 +03:00
Dmitry Petrov
440e02016b KT-11588 Type aliases
Fix diagnostic tests (renamed diagnostic message)
2016-05-20 14:17:25 +03:00
Dmitry Petrov
32f61c3918 KT-11588 Type aliases
Deserialization
2016-05-20 14:17:25 +03:00
Dmitry Petrov
f296b17861 KT-11588 Type aliases
Additional test(s)
2016-05-20 14:17:25 +03:00
Dmitry Petrov
75e08ace17 KT-11588 Type aliases
Make type alias expansion PSI-independent
2016-05-20 14:17:25 +03:00
Dmitry Petrov
65293008fd KT-11588 Type aliases
Type alias descriptor serialization
Types with type aliases serialization
2016-05-20 14:17:24 +03:00
Dmitry Petrov
59472927cd KT-11588 Type aliases
Light class generation: do not fail on type aliases
TODO: actual binary representation for type aliases
2016-05-20 14:17:24 +03:00
Dmitry Petrov
a4406687f1 KT-11588 Type aliases
Resolution & expansion for type aliases.
NB: Nested type aliases capturing type parameters of outer classes are not supported yet.
2016-05-20 14:17:24 +03:00
Dmitry Petrov
ec94893189 KT-11588 Type aliases
Parse type aliases as top-level, member, and local declarations.
2016-05-20 14:17:24 +03:00
Mikhail Glukhikh
ceb4aa7ac0 Cleanup: simplify for 2016-05-20 13:38:46 +03:00
Mikhail Glukhikh
ebd57fafd7 Cleanup: val can be parameter 2016-05-20 13:38:42 +03:00
Dmitry Petrov
b86fb64008 KT-12358: fake override of a method of 'Any' in an interface is not an "implementation". 2016-05-20 13:02:29 +03:00
Stanislav Erokhin
74bddcfb70 Refactoring. Convert Annotated to kotlin. 2016-05-20 09:32:55 +03:00
Stanislav Erokhin
450ea78b1d Refactoring. Convert KotlinType to kotlin. 2016-05-20 09:32:54 +03:00
Stanislav Erokhin
8c2d68fff0 Refactoring. Move specificity relations into TypeSpecificityComparator component. 2016-05-20 09:32:53 +03:00
Stanislav Erokhin
921eb8402c Transform OverloadUtil into OverloadChecker component. 2016-05-20 09:32:53 +03:00
Stanislav Erokhin
c4778bfe5a Fixed type checking recursive problem.
#KT-11995 Fixed
2016-05-20 09:26:56 +03:00
Alexander Udalov
1c8272d3f1 Simplify data class function generation and signature lookup code
- change prerequisites for generating equals/hashCode/toString in a data class:
  previously they were generated if the corresponding method is trivial (i.e.
  it comes from kotlin.Any), now we're generating it always unless it'll cause
  a JVM signature clash error (see KT-6206)
- use static KotlinBuiltIns.isXxx methods to compare types instead of checking
  against descriptors loaded from certain built-ins instance, this is quicker
  and more correct in environments where several built-ins are possible
- don't use isOrOverridesSynthesized, it's not relevant for
  equals/hashCode/toString because functions with these names are never
  synthesized

 #KT-6206 Fixed
2016-05-20 00:54:19 +03:00
Alexander Udalov
2200bfcc85 Simplify ImplementationBodyCodegen#generateToArray
- don't do anything for interfaces because there's no point in generating
  abstract methods which are already abstract in supertypes
- don't use getDeclaredFunctionByRawSignature, check function signature
  manually instead
- don't use isOrOverridesSynthesized because 'toArray' is never synthesized
2016-05-20 00:54:18 +03:00
Alexander Udalov
b208995d73 Render different class kinds differently in bytecode listing test 2016-05-20 00:36:56 +03:00
Alexander Udalov
c1c2651988 J2K backend-common classes: convert
Also merge CodegenUtilKt into CodegenUtil
2016-05-20 00:36:56 +03:00
Alexander Udalov
27ed0dd25f J2K backend-common classes: rename .java -> .kt 2016-05-20 00:36:56 +03:00
Ilya Gorbunov
bf2576e25c Change snapshot version in gradle configurator and AddKotlinLib quick fixes. 2016-05-19 18:10:57 +03:00
Denis Zharkov
4cbd2fbe62 Compute cached-value under common storage manager
Before this commit it was calculated under separate lock, so it could turn into dead-lock

 #KT-12396 Fixed
2016-05-19 17:55:38 +03:00
Dmitry Petrov
a25ba5baf1 KT-12156: for the purposes of inline-related diagnostics
treat function declaration as final if it is a member of a final class
2016-05-19 17:43:29 +03:00
Stanislav Erokhin
7332032bb6 Support sealed class inheritors in the same file
#KT-11573 Fixed
2016-05-19 16:22:40 +03:00
Alexey Sedunov
26be254fbe Spring Support: Show autowiring candidates line markers for @Autowired-annotated constructors and constructor parameters
#KT-12120 Fixed
2016-05-19 13:56:12 +03:00
Alexey Sedunov
2bd03fe9b0 Spring Support: Fixed bean references in factory method calls
#KT-12384 Fixed
2016-05-19 13:56:11 +03:00
Alexey Sedunov
417995b569 Spring Support: Fixed "Spring Facet Code Configuration (Kotlin)" inspection description
#KT-12143 Fixed
2016-05-19 13:56:10 +03:00
Alexey Sedunov
53b08a1d33 Spring Support: Report object declarations in "Final Kotlin class or function with Spring annotation" inspection
#KT-12148 Fixed
2016-05-19 13:56:09 +03:00
Alexey Sedunov
aaa42e872a Spring Support: Fixed "Autowired members defined in invalid Spring bean (Kotlin)" inspection description
#KT-12363 Fixed
2016-05-19 13:56:07 +03:00
Alexey Sedunov
85d07e5f6d Spring Support: Implement Spring @Autowired inspection
#KT-12278 Fixed
 #KT-12147 Fixed
 #KT-12366 Fixed
 #KT-12122 Fixed
2016-05-19 13:56:06 +03:00
Alexey Sedunov
36f3d30250 Refactoring: Extract registerWithElementsUnwrapped() function 2016-05-19 13:56:04 +03:00
Alexey Andreev
cb36b61f7f KT-12254 Prevent JsEmptyExpression from getting into initializer JS when compiling code like val x = throw Exception() 2016-05-19 11:41:50 +03:00
Alexey Andreev
4387c31939 KT-8005 Add test to prove the issue is no more reproducible 2016-05-19 11:37:02 +03:00
Alexey Andreev
3cd7dcdb26 KT-8299 Make proper access to private fields in generated methods of data classes 2016-05-19 11:32:22 +03:00
Ilya Gorbunov
fda9797dc4 Do not deploy anymore kotlin maven plugin tests and build common test utilities to maven central 2016-05-19 05:31:18 +03:00
Ilya Gorbunov
bdf80ec747 Sanitize escape sequences when verifying maven output 2016-05-19 05:31:15 +03:00
Ilya Gorbunov
7f5b586e3f Specify kotlin snapshot version in maven plugin integration tests only once. 2016-05-19 05:31:08 +03:00
Mikhail Glukhikh
f81192d48f Simplify for: take into account two or more possible local variables for the same loop parameter property 2016-05-18 19:56:19 +03:00
Mikhail Glukhikh
9108ab1923 Simplify for: take into account local property mutability 2016-05-18 19:56:14 +03:00
Mikhail Glukhikh
d0fd3dea67 Simplify for: take into account loop parameter nullability 2016-05-18 19:56:10 +03:00
Mikhail Glukhikh
a56248a11a Simplify for now works even if no variables are declared inside loop #KT-12145 Fixed 2016-05-18 19:56:06 +03:00
Denis Zharkov
46ac26147b Annotate with @UnsafeVariance relevant types in built-ins 2016-05-18 19:21:38 +03:00
Denis Zharkov
279ff0b561 Extract variance check algorithm into 'core' module 2016-05-18 19:21:38 +03:00
Mikhail Glukhikh
c95e11cc7e Import as alias with another name is now counted as usage itself #KT-11933 Fixed 2016-05-18 17:46:18 +03:00
Mikhail Glukhikh
0cf61b1b5b Cleanup: simplify for 2016-05-18 17:46:13 +03:00
Mikhail Glukhikh
d366da5cd6 Simplify for intention: now is not active if map / data class properties aren't used in a loop #KT-11716 Fixed 2016-05-18 17:46:09 +03:00
Mikhail Glukhikh
3930184f1f Can be parameter inspection: usage in secondary constructor is now handled as property use 2016-05-18 17:46:05 +03:00
Mikhail Glukhikh
bc7fbdc0a2 Can be parameter inspection: minor test correction 2016-05-18 17:46:01 +03:00
Mikhail Glukhikh
b026969144 Can be parameter inspection: handle usage in super call; again #KT-10819 Fixed 2016-05-18 17:45:57 +03:00
Zalim Bashorov
7b1afd4e6a JS backend: use ResolvedCall when translate super expression and remove some heuristics when translate receivers; generate right receiver when reference to super of outer class; 2016-05-18 17:34:18 +03:00
Alexey Tsvetkov
07adf65f70 Minor: add repository path for android test 2016-05-18 15:24:27 +03:00
Alexey Tsvetkov
a36e3a47ed Keep order of parsed annotations 2016-05-18 15:24:21 +03:00
Alexey Tsvetkov
65df1debe0 Minor: fix downloading sdk in test 2016-05-18 15:24:17 +03:00
Alexey Tsvetkov
b4d47df52b Avoid cache corruption on compile error
#KT-11874 fixed
2016-05-18 15:24:13 +03:00
Sergey Mashkov
09caa65806 KT-12074 Building Kotlin maven projects using a parent pom will silently fail
integration tests
2016-05-18 14:47:17 +03:00
Sergey Mashkov
2d03a5a106 Maven: add maven plugin multimodule test 2016-05-18 14:47:16 +03:00
Sergey Mashkov
77df2e07ad KT-12074 Building Kotlin maven projects using a parent pom will silently fail
We should consider module's basedir if there is relative source directory specified for the execution
2016-05-18 14:47:16 +03:00
Nikolay Krasko
add07ad1a5 Remove unused import 2016-05-18 13:33:18 +03:00
Ilya Gorbunov
5ba8046b48 Change memory growth assertions in testKotlinOnlyDaemonMemory: ensure that the maximum of the used memory established after several first builds doesn't raise significantly in the subsequent builds. Current constraint is 500K per 10 builds which gives 50K per build at average. 2016-05-18 01:45:37 +03:00
Nikolay Krasko
89a10578f4 Remove unused method that causes compatibility problem in update AS plugin 2016-05-17 21:34:00 +03:00
Dmitry Jemerov
fd78424056 remove duplicate source root; update testdata according to the appearance of decompiler in dependencies 2016-05-17 19:53:47 +02:00
Sergey Mashkov
3710520549 Maven: fix integration tests 2016-05-17 18:17:43 +03:00
Mikhail Glukhikh
20bff9f121 Unused symbol inspection refactoring: no use of bundled unused.* 2016-05-17 14:29:05 +03:00
Mikhail Glukhikh
a4ad995f31 Overridden functions using default arguments in recursive call are no more considered tail recursive #KT-4285 Fixed 2016-05-17 14:29:01 +03:00
Mikhail Glukhikh
f35fd32a25 Exhaustive when with 'Unit' result now also generates an exception in else branch #KT-12192 Fixed 2016-05-17 14:28:57 +03:00
Alexey Andreev
23a4184e48 Minor style and formatting improvements of CallArgumentsTranslator 2016-05-17 10:33:16 +03:00
Alexey Andreev
2f42f3bdf6 KT-12305 Fix passing single argument to native vararg function 2016-05-17 10:33:15 +03:00
Ilya Gorbunov
a0e8ed7186 Revert: Disable check for "Access to tree elements not allowed in tests" in completion tests. 2016-05-16 20:54:00 +03:00
Stanislav Erokhin
f376c418dc Fix SOE related exact annotation and completion 2016-05-16 18:32:16 +03:00
Mikhael Bogdanov
2d185dc7cf Public api update after adding LocalVariableReference and MutableLocalVariableReference 2016-05-16 17:36:35 +03:00
Dmitry Jemerov
1653f9f480 add "Decompile" button to Kotlin Bytecode toolwindow 2016-05-16 16:03:01 +02:00
Denis Zharkov
9dc47d9a11 Move java/util/List.sort to MutableList 2016-05-16 15:38:13 +03:00
Denis Zharkov
d0acb3674a Fix rendered testData
New members in enum member scope
2016-05-16 15:38:13 +03:00
Denis Zharkov
e90c92f8d3 Separate additional built-in members from JDK into three groups
- White list: can be used as common built-in declaration
- Black list: can be used only for overrides and super-calls-
- Not considered members: ones that is not in black or white list.
Such members can be used in any context, but they usages marked as deprecated

Third kind is needed to make possible use declarations added in future JDK versions.
Deprecation is necessary because they may get into black list in next Kotlin compiler version
2016-05-16 15:38:13 +03:00
Denis Zharkov
308ee93392 Minor. Rename field and clarify how it differs from similar one 2016-05-16 15:38:13 +03:00
Denis Zharkov
ef940ab0df Add new 'HiddenInResolution' kind
It's used to hide additional built-ins members loaded from JDK
Such methods can be overridden and called only with 'super'-receiver
2016-05-16 15:38:13 +03:00
Denis Zharkov
1501a042e9 Add possibility to add annotations when building FunctionDescriptor copy
It's being used in next commits to add Deprecated annotation
to unknown additional built-ins members
2016-05-16 15:38:13 +03:00
Mikhail Glukhikh
79852e9912 Do not return primary constructor as an analyzable parent, probably #EA-73679 Fixed 2016-05-16 15:12:28 +03:00
Alexey Sedunov
60f23e9a7e Minor: Move META-INF to "resources" source root 2016-05-16 02:52:24 +03:00
Alexey Sedunov
29310b5ca8 Code Insight: Suppress file reference completion on typing. Disable file references on string literals with escape sequences 2016-05-16 02:52:23 +03:00
Alexey Sedunov
edb3fd8f00 Spring Support: Replace light elements bound to line markers with their originals
#KT-12091 Fixed
2016-05-16 02:52:22 +03:00
Yaroslav Ulanovych
de94d5c414 Fix KT-11839 maven goal to execute kotlin script 2016-05-15 16:08:55 +02:00
Valentin Kipyatkov
e8d518a28f KT-9166 Code completion does not work for synthetic extensions on typing "g"
#KT-9166 Fixed
2016-05-14 12:19:42 +03:00
Valentin Kipyatkov
e04c6d1f5c KT-12299 Completion: incorrect priority of property foo over method getFoo in Kotlin-only code
#KT-12299 Fixed
2016-05-14 12:19:42 +03:00
Valentin Kipyatkov
97ad0d5c86 KT-12124 No code completion for a java property in a specific position
#KT-12124 Fixed
2016-05-14 12:19:41 +03:00
Valentin Kipyatkov
f6c8ac70fc Moved method getSmartCastVariantsWithLessSpecificExcluded() into IDE 2016-05-14 12:19:41 +03:00
Valentin Kipyatkov
b6c54ac314 Minor code improvements after conversion 2016-05-14 12:19:41 +03:00
Valentin Kipyatkov
83714ae9c9 Conversion to Kotlin (step 2) 2016-05-14 12:19:41 +03:00
Valentin Kipyatkov
ccd7ae901c Conversion to Kotlin (step 1) 2016-05-14 12:19:40 +03:00
Valentin Kipyatkov
fe2953090e Added test for KT-12124 2016-05-14 12:19:40 +03:00
Mikhail Glukhikh
182ade19e9 'Long' type is now stored for 'Long' literal #KT-12267 Fixed 2016-05-13 19:51:30 +03:00
Mikhael Bogdanov
48c8678281 Extracted logic of obtaining delegated local variable metadata 2016-05-13 19:11:24 +03:00
Mikhael Bogdanov
c06b51c1d1 Allow top-level local delegated properties in scripts 2016-05-13 19:11:23 +03:00
Mikhael Bogdanov
6ece2b41d6 Box inline test for local delegated property 2016-05-13 19:11:23 +03:00
Mikhael Bogdanov
5e933b7acd localVariableReferences.kt moved from reflection.jvm to runtime.jvm 2016-05-13 19:11:22 +03:00
Mikhael Bogdanov
93b342c936 TODO: reuse tests for local delegated properties from JVM backend in JS one 2016-05-13 19:11:22 +03:00
Mikhael Bogdanov
e207b56009 Support increment and '+=' on local delegated properties in JS backend 2016-05-13 19:11:21 +03:00
Mikhael Bogdanov
ec632c37ab Support increment and '+=' on local delegated properties 2016-05-13 19:11:21 +03:00
Mikhael Bogdanov
6ae511b253 LocalVariableDescriptor.withAccessors renamed to isDelegated, added getter 2016-05-13 19:11:20 +03:00
Dotlin
0e071b4748 Delegated Properties: Code generation for local properties (JS) 2016-05-13 19:11:20 +03:00
Dotlin
4c223845b6 Delegated Properties: Code generation for local properties (JVM) 2016-05-13 19:11:19 +03:00
Dotlin
fa523b9af4 Delegated Properties: Analysis adjustments for local delegated properties support 2016-05-13 19:11:18 +03:00
Ilya Gorbunov
9bfb226948 Drop inline-only extensions and hide non-inline-only ones that are available now as mapped methods of mapped builtins.
#KT-10887 Fixed
2016-05-13 18:14:52 +03:00
Mikhail Glukhikh
9bd3be68f7 Code cleanup: protected is effectively private 2016-05-13 17:57:17 +03:00
Mikhail Glukhikh
e31806e2b5 Code cleanup: redundant modality (minor) 2016-05-13 17:57:12 +03:00
Mikhail Glukhikh
1301d9047d Code cleanup: redundant visibility (minor) 2016-05-13 17:57:08 +03:00
Mikhail Glukhikh
733f3e8025 Code cleanup: type parameters can have in / out variance 2016-05-13 17:57:02 +03:00
Valentin Kipyatkov
9afb0d5f59 KT-12284 "Add braces to else" has too wide range
#KT-12284 Fixed
2016-05-13 17:44:01 +03:00
Valentin Kipyatkov
618b1b9a2a Refactored replace with safe/dot call fixes 2016-05-13 17:44:01 +03:00
Valentin Kipyatkov
3f82cc9b39 KT-12260 ISE while replacing an operator with safe call
#KT-12260 Fixed
2016-05-13 17:44:01 +03:00
Natalia Ukhorskaya
6e28c381c4 Update icon for "New -> Kotlin Activity" Action
Assets were taken from DSGN-2829
2016-05-13 16:43:32 +03:00
Mikhail Glukhikh
6da8ab7a97 Unused symbol: take into account possible JUnit static method annotations #KT-11320 Fixed 2016-05-13 14:08:30 +03:00
phx402@gmail.com
75e9e35669 Fixed incorrect "No cast needed" warning when casting from extension function to regular one and vise versa
#KT-11780 Fixed
2016-05-13 13:40:14 +03:00
Mikhail Glukhikh
8920e67c5a Unused symbol: secondary constructors are also under analysis #KT-10812 Fixed 2016-05-13 13:22:25 +03:00
Alexander Udalov
b7581b35c9 Add empty source jars to kotlin-build-common Maven artifacts
Maven Central requires all artifacts to have sources and javadocs
2016-05-12 23:48:03 +03:00
Valentin Kipyatkov
dd16eb14e5 KT-12080 Move parameter names higher up in code completion
#KT-12080 Fixed
2016-05-12 22:22:46 +03:00
Ilya Gorbunov
15dcd3d9f9 Add tests for deserialization of collections persisted with kotlin 1.0 2016-05-12 21:20:54 +03:00
Ilya Gorbunov
6a07d5f89c Fix serialVersionUID for EmptyList after introducing RandomAccess interface. #KT-10794 2016-05-12 21:20:54 +03:00
Dmitry Jemerov
be8c953be6 workaround for KT-9407: don't use qualified name in Pattern class link
#KT-12129 Fixed
2016-05-12 17:53:30 +02:00
Dmitry Jemerov
11c0b30394 specify github revision number in build parameters 2016-05-12 16:56:19 +02:00
Nikolay Krasko
b107bc401c Formatter: Don't enforce empty line between secondary constructors without body (KT-12175)
#KT-12175 Fixed
2016-05-12 17:26:54 +03:00
Nikolay Krasko
52cd7109c7 Use left bound element types to tight empty delegation contructor call to declaration
CONSTRUCTOR_DELEGATION_CALL and CONSTRUCTOR_DELEGATION_REFERENCE types were modified.
2016-05-12 17:25:19 +03:00
Nikolay Krasko
1a1c10251a Make code fragments files non-physical with event system disabled (KT-12232)
Fix "File copy should be non-physical and non-event-system-enabled! Language=Language:
kotlin; file=JetFile: fragment.kt of class org.jetbrains.kotlin.psi.KtExpressionCodeFragment" assert.

Inspired by Java fragment files

 #KT-12232 Fixed
2016-05-12 17:24:54 +03:00
Nikolay Krasko
9c2ceca4b8 Revert "Additional simple test for variable initialize in secondary constructor"
This reverts commit 147f170f80.
2016-05-12 17:22:16 +03:00
Nikolay Krasko
f015a27fd0 Revert "Make code fragments files non-physical with event system disabled"
This reverts commit d02b89a7a0.
2016-05-12 17:21:21 +03:00
Nikolay Krasko
147f170f80 Additional simple test for variable initialize in secondary constructor 2016-05-12 17:13:24 +03:00
Nikolay Krasko
d02b89a7a0 Make code fragments files non-physical with event system disabled
As a side effect it will disable write checks for fragments files

This allows completion work without write action.
Inspired by Java fragment files
2016-05-12 17:13:24 +03:00
Alexey Sedunov
df46a8c67a Spring Support: Implement bean references in @Qualifier annotations
#KT-12092 Fixed
2016-05-12 13:03:04 +03:00
Alexey Sedunov
4a65b1c65c Code Insight: Support file path references inside of Kotlin string literals
#KT-11704 Fixed
2016-05-12 13:03:02 +03:00
Nikolay Krasko
6a309bdb4e No more patched jflex 1.4.3 in idea repository. Download artifact from maven.
02c7c658e8
2016-05-12 10:15:30 +03:00
Nikolay Krasko
96ec8e04ef Make downloading idea sources optional 2016-05-12 10:14:19 +03:00
Yan Zhulanow
99b619497a Fix EA-81689 2016-05-11 21:37:16 +03:00
Alexey Tsvetkov
af9f6d96bb Change version to 1.1-SNAPSHOT 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
60c5c8a2cc Fix Application leak in AbstractAnnotationProcessorBoxTest 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
9214798613 Increase daemon test memory limit again
It is still more strict than it was before (before each test build could grow < 2500 kb, now < 300 kb on average of 10 runs)
2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
6f3ea01084 Refactoring: rename ClassBuilderMode entry LIGHT_CLASSES_WITH_METADATA->KAPT 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
10b9be9f51 Fix collecting source retention annotations
#KT-12187 fixed
2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
cac49b6609 Add class stubs dir to stub generation task classpath 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
f2ca788ea3 Serialize error type to proto when generating stubs 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
8d189bae55 Refactoring: rename javaAptSourceDir->hackAnnotationDir 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
cb94936e51 Refactoring: rename AnnotatedElementDescriptor->AnnotatedElement 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
6dd388d0f0 Exclude compiled files when compiling incrementally 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
fb8ed25e99 Report compiled classes when generating kapt stubs 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
4b591d2220 Include metadata in light classes for kapt 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
f7a665d0d2 Fix incremental compilation with kapt generating stubs
Changes:
* map incremental property to compile kotlin after java task
* when generating stubs compile kotlin task should not remove or copy classfiles
2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
853b15ee98 Add kapt incremental tests 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
fe6e69ff89 Update kapt annotations file incrementally 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
c21693b0d0 Serialize KotlinAnnotationProvider 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
33dc792bf9 Minor: extract constant 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
3ef21a941c Refactoring: make AnnotatedElementDescriptor hierarchy sealed 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
26781bc139 Pass reader as param 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
e0afb94628 Make fun local since it's bound to outer function semantics 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
3340731c71 Read annotations during construction of KotlinAnnotationsProvider
The rationale is to access kotlinClassesInternal and annotatedKotlinElementsInternal
in any order
2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
69a8654e91 Minor: add const 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
28abc73f22 Pass reader in constructor to KotlinAnnotationProvider 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
12531c4a90 Make annotation collector tests more thorough 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
e84ae5117d Refactoring: move kapt tests to separate class 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
93117ed637 Prevent compile tasks from running when nothing changes
#KT-10932 fixed
2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
0bbd2f38dc Minor: use more recent version of gradle in test 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
fe43e1ae79 Minor: do not print output in assertion message 2016-05-11 20:41:48 +03:00
Alexey Tsvetkov
10396ecc84 Refactoring: extract properties for gradle task's properties access in plugin 2016-05-11 20:41:48 +03:00
Valentin Kipyatkov
0c367c6e08 Added missing test data 2016-05-11 19:52:31 +03:00
Mikhail Glukhikh
be2b37db5e Unused symbol inspection: properties declared in primary constructor are now checked on 'Used' annotations #KT-11120 Fixed 2016-05-11 19:08:42 +03:00
Mikhail Glukhikh
a098977c54 Do not try to make object's containing class abstract #KT-11466 Fixed 2016-05-11 19:08:37 +03:00
Mikhael Bogdanov
af2cf715be Disabled dexInProcess and incremental compilation in test android module, explicitly set Xmx for dex process cause of teamcity memory allocation fails 2016-05-11 18:07:27 +03:00
Mikhael Bogdanov
1d2a83e182 Added support for 'JVM.INHERIT_MULTIFILE_PARTS' flag in android tests 2016-05-11 18:07:26 +03:00
Mikhael Bogdanov
ed60cf8c55 Added support for reflection tests on android 2016-05-11 18:07:26 +03:00
Mikhael Bogdanov
d6a64af929 Fix for KT-12125: Wrong increment/decrement on Byte/Char/Short.MAX_VALUE/MIN_VALUE
#KT-12125 Fixed
2016-05-11 18:07:25 +03:00
Ilya Gorbunov
8425304866 Advance snapshot version to 1.1-SNAPSHOT 2016-05-11 17:28:38 +03:00
Alexander Udalov
6b1f3e679f Update ChangeLog for 1.0.2 2016-05-11 12:21:32 +03:00
Alexey Sedunov
44f565e600 Spring Support: Support "Autowired members defined in invalid Spring bean" inspection on Kotlin declarations
#KT-12079 Fixed
2016-05-10 19:41:35 +03:00
Alexey Sedunov
d4aa179336 Change Signature: Do not force substitution of error types
#EA-81021 Fixed
2016-05-10 19:41:33 +03:00
Valentin Kipyatkov
962223159a Do not use setting specifyFieldTypeByDefault for locals 2016-05-10 18:26:04 +03:00
Valentin Kipyatkov
bf9e4a3d84 Better code 2016-05-10 18:26:04 +03:00
Valentin Kipyatkov
07c961d99d Moved local method out 2016-05-10 18:26:04 +03:00
Valentin Kipyatkov
bdd425c1a0 KT-11952 J2K: Assertion failed in PropertyDetectionCache.get on conversion of access to Java constant of anonymous type
#KT-11952 Fixed
2016-05-10 18:26:04 +03:00
Valentin Kipyatkov
de02b56354 Fixed test data 2016-05-10 18:26:03 +03:00
Valentin Kipyatkov
70a5540c00 Minor changes after code review 2016-05-10 18:24:22 +03:00
Valentin Kipyatkov
cca3237e46 KT-4727 J2K: Convert Java code copied from browser or other sources
#KT-4727 Fixed
2016-05-10 18:24:21 +03:00
Valentin Kipyatkov
4cbb098671 Renamed class 2016-05-10 18:24:21 +03:00
Alexey Andreev
826cee58bd KT-11996 Fix issue with referencing outer class in case of inner class constructors and members/properties. Fix issue with referencing outer classes from secondary constructors. Remove unnecessary tests. 2016-05-10 17:41:21 +03:00
Alexey Andreev
1764000bf4 KT-11823 Generate proper argument for closure constructor for this as a free variable. Give some explanation for function that generates closure arguments as well as a clear name. Give explanation to some code in UsageTracker.isSingletonReceiver, augmented by a test case. 2016-05-10 17:41:21 +03:00
Nikolay Krasko
ab79deacbd Remove write action from refactoring start (KT-11486)
#KT-11486 Fixed
2016-05-10 16:06:01 +03:00
Nikolay Krasko
5c1e5b3cdc Make KtLightModifierList behave like light element and check it in tests 2016-05-10 16:06:00 +03:00
Dmitry Jemerov
42ba14328c move KDoc-related logic shared between IDEA and Dokka to ide-common module 2016-05-10 15:00:15 +02:00
Valentin Kipyatkov
07207949ba Support of KT-11255 Support Move Element Left/Right actions for Kotlin (except for enum entries)
#KT-11255 Fixed
2016-05-10 15:48:40 +03:00
Valentin Kipyatkov
7e99a6bb45 Refactored AbstractCodeMoverTest 2016-05-10 15:41:33 +03:00
Valentin Kipyatkov
06db49bab7 Restored lost tests 2016-05-10 15:41:33 +03:00
Valentin Kipyatkov
b6301e819a Converted to Kotlin 2016-05-10 15:41:32 +03:00
Valentin Kipyatkov
8da5af3a10 KT-11974 Invert if-condition intention loses comments
#KT-11974 Fixed
2016-05-10 15:40:51 +03:00
Valentin Kipyatkov
7b1bf4c7dd Fixed dialog with suggestion to process external code shown even when there is nothing to process 2016-05-10 15:00:57 +03:00
Mikhail Glukhikh
48ba63fa27 Can be parameter inspection: usages in all functions are now handled as property usage 2016-05-10 10:53:34 +03:00
Ilya Gorbunov
d646afabb2 Document functions which return set or map preserving the order of elements/entries.
#KT-11632 Fixed
2016-05-08 03:24:03 +03:00
Dmitry Jemerov
b5e5c6f4d0 generate correct HTML for code blocks 2016-05-06 22:11:53 +02:00
Dmitry Jemerov
94c241443b support @receiver KDoc tag; somewhat more precise tag name completion 2016-05-06 22:11:50 +02:00
Dmitry Jemerov
3b57b78ddc KDocKnownTag: J2K 2016-05-06 22:11:49 +02:00
Dmitry Jemerov
6935cfeafa KDocKnownTag: rename to .kt 2016-05-06 22:11:48 +02:00
Dmitry Jemerov
992817e70c don't trim whitespace when converting whitespace to HTML
#KT-10998 Fixed
2016-05-06 22:11:46 +02:00
Dmitry Jemerov
d7b1526cd5 preserve leading indentation in KDoc code blocks
#KT-9933 Fixed
2016-05-06 22:11:38 +02:00
Dmitry Jemerov
721629f8e0 integrate Ingo Kegel's Dokka fix for rendering standalone * and _ characters 2016-05-06 22:11:34 +02:00
Dmitry Jemerov
6cbf1de170 render markdown inside link texts
#KT-11791 Fixed
2016-05-06 22:11:32 +02:00
Dmitry Jemerov
c967cc8a23 resolve references from @param to type parameters of functions
#KT-12001 Fixed
2016-05-06 22:11:31 +02:00
Kirill Rakhman
97c3c633a7 Add quickfix for UNUSED_LAMBDA_EXPRESSION (#867)
Fixes #KT-9757
2016-05-06 18:46:12 +03:00
Mikhael Bogdanov
ca31ce8d88 Support new tests on android, disabled not applicable ones 2016-05-06 17:31:53 +03:00
Kirill
5b6a8dcfd3 Don't mark magic Serializable methods as unused
Fixes #KT-10635
2016-05-06 15:33:55 +02:00
Ilya Chernikov
d77923af47 minor: fix after review 2016-05-06 13:06:39 +02:00
Ilya Chernikov
22283be1b7 minor: Make term "canceled" uniformly spelled in identifiers and strings in the daemon 2016-05-06 13:06:38 +02:00
Ilya Chernikov
1614aca48e Implement graceful connection failure behavior on daemon connect and cancellation check
Should fix (or actually - behave gracefully on) #EA-74003, #EA-74493, #EA-76032, #EA-76529, #EA-81295
Tests added
2016-05-06 13:06:38 +02:00
Ilya Chernikov
336226ac9e minor: Switch to simpler descending sort, reduce dependency 2016-05-06 13:06:37 +02:00
Nikolay Chashnikov
551aa7047e run configuration: use default logic of creating new run configurations to avoid sharing RunConfigurationModule instances between different run configurations (KT-12204) (#869) 2016-05-06 12:01:12 +03:00
Zalim Bashorov
c11d504a26 Minor: add test for KT-11993 "NoSuchMethodError when testing internal symbols" 2016-05-05 20:45:29 +03:00
Nikolay Krasko
6cafa51b07 Description for AddJvmOverloadsIntention 2016-05-05 17:27:48 +03:00
Nikolay Krasko
527907635d Enable JDK 8 level in some tests for correct convert for method references 2016-05-05 17:27:47 +03:00
Alexey Andreev
12c9a97587 JS/RTTI: minor refactoring of expandInCalls 2016-05-05 17:24:27 +03:00
Alexey Andreev
7ff658414f JS/RTTI: if it's known that T <: X & Y, where T is non-reified type variable, for each a is T check that a is X && a is Y 2016-05-05 17:24:26 +03:00
Alexey Andreev
6454613b51 JS/RTTI: in expressions like a as T when inferred type for a is S, where S <: T, don't generate type checking 2016-05-05 17:24:25 +03:00
Alexey Andreev
0f6a6a3ba4 JS/RTTI. Fix runtime checking against kotlin.CharSequence 2016-05-05 17:24:25 +03:00
Alexey Andreev
f52b836f0e JS/RTTI: fix withInlineTurnedOff test 2016-05-05 17:24:24 +03:00
Alexey Andreev
75015f6bfa JS/RTTI: fix compiler crashing when translating expressions like (continue as T) 2016-05-05 17:24:23 +03:00
Zalim Bashorov
3a87049359 JS/RTTI. Fix build and tests 2016-05-05 17:24:23 +03:00
Alexey Tsvetkov
9bb60b48b2 JS/RTTI. Fix run-time type checking against Comparable 2016-05-05 17:24:22 +03:00
Alexey Tsvetkov
390d71ac8d JS/RTTI. Fix RegExpMatch 2016-05-05 17:24:21 +03:00
Alexey Tsvetkov
fcd941ad49 JS/RTTI: removed Kotlin.orNull(Kotlin.isAny) optimization 2016-05-05 17:24:21 +03:00
Alexey Tsvetkov
f7af868d4f JS/RTTI: added another cast to reified test 2016-05-05 17:24:20 +03:00
Alexey Tsvetkov
a9d5c74ff7 JS/RTTI: Added cast to Array test 2016-05-05 17:24:19 +03:00
Alexey Tsvetkov
c99fd179e1 JS/RTTI: simplify cast to Any test 2016-05-05 17:24:19 +03:00
Alexey Tsvetkov
cd60a8d207 JS/RTTI: fixed cast to generic type parameter with upper bound different than Any 2016-05-05 17:24:18 +03:00
Alexey Tsvetkov
d42cbde74d JS/RTTI: (minor) fixed typo 2016-05-05 17:24:17 +03:00
Alexey Tsvetkov
57fbab9f7c JS/RTTI: (minor) escape code fragments in comments 2016-05-05 17:24:17 +03:00
Alexey Tsvetkov
87659bd95b JS/RTTI: fix nullability check 2016-05-05 17:24:16 +03:00
Alexey Tsvetkov
7a5b4650ad JS/RTTI: use Array.isArray to check array instance 2016-05-05 17:24:16 +03:00
Alexey Tsvetkov
ae9a5523e0 JS/RTTI: use typeof f === 'function' to check function instance 2016-05-05 17:24:15 +03:00
Alexey Tsvetkov
7cfe1433c5 JS/RTTI: cast to generic type parameter as to Any 2016-05-05 17:24:15 +03:00
Alexey Tsvetkov
38b0effe15 JS/RTTI: fix cast to Any 2016-05-05 17:24:14 +03:00
Alexey Tsvetkov
2b3ebc7e9f JS/RTTI: support safe casts 2016-05-05 17:24:13 +03:00
Alexey Tsvetkov
3fd387d4a6 JS/RTTI: support unsafe casts
#KT-2670 fixed
2016-05-05 17:24:13 +03:00
Alexey Tsvetkov
1d2da9729e JS/RTTI: made cast test generated 2016-05-05 17:24:12 +03:00
Alexey Tsvetkov
427b95f821 JS/RTTI: test that reified is-check works when inline turned off 2016-05-05 17:24:12 +03:00
Alexey Tsvetkov
dce0971c52 JS/RTTI: fixed double testing for null for reified 2016-05-05 17:24:11 +03:00
Alexey Tsvetkov
5fdede74a3 JS/RTTI: avoid possible side-effect for is-check on nullable type
#KT-7038 fixed
2016-05-05 17:24:10 +03:00
Alexey Tsvetkov
c6cf6a0df7 JS/RTTI: use generation for rtti test 2016-05-05 17:24:10 +03:00
Alexey Tsvetkov
0b9c041d0a JS/RTTI: fixed is-check on nullable reified parameters
#KT-7016 fixed
    #KT-8012 fixed
2016-05-05 17:24:09 +03:00
Natalia Ukhorskaya
e1d10abfa1 Debugger: do not use forceResolveScope for codeFragments in completion and AutoImportFix.
#KT-12137 Fixed
2016-05-05 06:29:36 +03:00
Valentin Kipyatkov
c45bee5327 KT-12040 "Replace when with if" produce invalid code for first entry which has comment
#KT-12040 Fixed
2016-05-04 18:25:26 +03:00
Alexander Udalov
17dacb1efa Revert "Minor, move SpecialNames.isSafeIdentifier check a little earlier"
This reverts commit a3055edda9.

It turns out, this re-introduces an AssertionError at ClassId.<init> ("Class
name must not be root") when LazyJavaPackageScope#getContributedClassifier is
called during SAM constructor resolution below in
LazyJavaPackageScope#computeNonDeclaredFunctions, which was overlooked at the
time the commit was pushed
2016-05-04 17:41:49 +03:00
Valentin Kipyatkov
16c38a2415 KT-12138 Do not show "::error" in smart completion when any function type accepting one argument is expected
(actually made them lowest priority)

 #KT-12138 Fixed
2016-05-04 17:28:30 +03:00
Valentin Kipyatkov
81e4114c5a Minor 2016-05-04 17:28:29 +03:00
Valentin Kipyatkov
941b415981 KT-12150 Smart completion suggests to compare non-nullable with null
#KT-12150 Fixed
2016-05-04 17:28:29 +03:00
Valentin Kipyatkov
40900b0050 No explicit runWriteAction required 2016-05-04 17:28:29 +03:00
Valentin Kipyatkov
0769c5453f KT-12103 Smart completion for nested SAM-adapter produces short unresolved name
#KT-12103 Fixed
2016-05-04 17:28:29 +03:00
Mikhael Bogdanov
cd6b709ef5 'bytecodeText' test for synthetic accessor generic signature converted to 'writeSignature' test 2016-05-04 17:07:48 +03:00
Mikhael Bogdanov
ee7bbbf530 Fix for KT-12127: Undeclared type variable on delegated property backing field
#KT-12127 Fixed
2016-05-04 17:07:48 +03:00
Valentin Kipyatkov
bac5c4d70b Fixed test data after commit: 602de317d6 2016-05-04 16:26:44 +03:00
Denis Zharkov
c30c695a18 Use cache for custom ClassDescriptors
Otherwise new ones are being created for each request, and their member scope is recomputed
2016-05-04 14:58:05 +03:00
Denis Zharkov
594fa02a9c Optimize memory usage by LockBasedStorageManager inner classes
Change all inner classes to be 'static'
Use explicit reference to StorageManager instead of
implicit reference to outer class.

The main problem of inner classes here is that outer instance
is being captured at each inheritance level, so e.g. some lazy value impls
may store up to three duplicating references.
2016-05-04 14:58:05 +03:00
Mikhael Bogdanov
09509b6d18 Update android test dependency to android 4.4.2 cause of missed test result problem on 4.1.2 2016-05-03 09:11:37 +03:00
Ilya Gorbunov
249d08a66e Handle special cases of drop, take, takeLast when it is known in advance that the result is a single-item list. #KT-9990 2016-04-29 22:21:19 +03:00
Ilya Gorbunov
d70b46fd37 Change evaluation test data not to encounter special implementation of single element list. 2016-04-29 22:21:19 +03:00
Ilya Gorbunov
a665b2183c Optimize operations to return special collection implementations when result is empty or has single element.
#KT-9990
2016-04-29 22:21:19 +03:00
Ilya Gorbunov
2d12ed68c8 Remove runtime specialization in inline last and lastOrNull to prevent double inlining of predicate body. 2016-04-29 22:21:19 +03:00
Ilya Gorbunov
09c1ff1233 Do not use indexed access for lists not supporting RandomAccess
Add RandomAccess specialization.
2016-04-29 22:21:19 +03:00
Ilya Gorbunov
f4f82656f7 Use list iterators instead of indexed access in operations on lists taking a lambda.
Related to #KT-9607
2016-04-29 22:21:19 +03:00
Nikolay Krasko
b743e71cfc Do not request write action for MoveDeclarationToSeparateFileIntention (EA-81511)
There's nothing but delegation to move refactoring. This started to fail in br146 because of this commit:
334772b7a8
2016-04-29 21:24:56 +03:00
Nikolay Krasko
4a5c298897 Revert another class of ComparisonFailure
Idea throws this class but not org.junit.ComparisonFailure
2016-04-29 21:24:56 +03:00
Nikolay Krasko
31043f43e3 Fix path replacement in reference tests
The commit fixes ReferenceResolveInJavaTestGenerated$BinaryAndSource.testFileFacade.
2016-04-29 21:24:56 +03:00
Michael Bogdanov
e2ae2f313c Support test with self imports, kotlin multifile tests 2016-04-29 16:33:04 +03:00
Michael Bogdanov
0f110b049b Fix for "adb: Syntax error: ")" unexpected" 2016-04-29 16:21:15 +03:00
Zalim Bashorov
ed0fa2c26c Fix NoSuchMethodError when try to access in test to internal member from production for gradle projects imported into IDEA 16 or higher
#KT-11993 Fixed
2016-04-29 18:23:26 +03:00
Valentin Kipyatkov
74b41cff0e Minor changes on code review 2016-04-29 18:13:53 +03:00
Valentin Kipyatkov
92af610322 KT-12045 J2K: creating Object() instance could be converted to Any()
#KT-12045 Fixed
2016-04-29 18:13:53 +03:00
Valentin Kipyatkov
76e067c43a KT-12054 J2K generates obj is Type<Any> instead of obj is Type<*>
#KT-12054 Fixed
2016-04-29 18:13:53 +03:00
Valentin Kipyatkov
a8eef5effc KT-12039 Convert Java to Kotlin -- static imports are imported as Class.CONST (missing .Companion)
#KT-12039 Fixed
2016-04-29 18:13:52 +03:00
Valentin Kipyatkov
a80d36e8eb Minor simplification 2016-04-29 18:13:52 +03:00
Valentin Kipyatkov
569483af5d Moved import conversion out of "ast" package 2016-04-29 18:13:52 +03:00
Valentin Kipyatkov
83442db408 Do not duplicate list of default imports 2016-04-29 18:13:52 +03:00
Valentin Kipyatkov
08a37b3acc Extracted methods 2016-04-29 18:13:52 +03:00
Valentin Kipyatkov
a9eadcbaf4 KT-12046 Java to Kotlin dangerous conversion (recursive property set)
#KT-12046 Fixed
2016-04-29 18:13:51 +03:00
Valentin Kipyatkov
9c0e1204ea Minor 2016-04-29 18:13:51 +03:00
Valentin Kipyatkov
b0e6bf3965 Deleted inspection profile 2016-04-29 17:06:28 +03:00
Alexander Udalov
384c32b63f Update ChangeLog for 1.0.2 2016-04-29 15:45:05 +03:00
Alexander Udalov
a3055edda9 Minor, move SpecialNames.isSafeIdentifier check a little earlier 2016-04-29 15:21:26 +03:00
Alexander Udalov
d85884426e Minor optimization of lookup tracker records 2016-04-29 15:21:26 +03:00
Alexander Udalov
785877d1de Combine Java package scope and Kotlin scopes in JvmPackageScope
Use it in LazyJavaPackageFragment#scope instead of a weird lazy chained scope.
Also move lookup tracker records to it, to prevent them from being written in
each package scope individually (this was hurting performance)
2016-04-29 15:21:26 +03:00
Alexander Udalov
05af72dc7a Optimize class lookups in DeserializedPackageMemberScope
Do not try to load classes (and litter in ClassDeserializer#classes cache with
unsuccessful requests) which the deserialized scope knows nothing about. This
is possible because deserialized scopes have the full list of their class names
2016-04-29 15:21:26 +03:00
Denis Zharkov
d259b91143 Add MutableMap.remove(K, V) as built-in declaration
Use PlatformDependent annotation to guarantee it's only be available for JDK8
Also adjust type-safe bridges and mutable collection stubs generation
2016-04-29 15:08:54 +03:00
Denis Zharkov
55c4f875c8 Use signatures instead of fq-names in special built-ins
It's necessary to distinguish overloads,
e.g. MutableMap.remove now has two versions
2016-04-29 15:08:54 +03:00
Kirill Rakhman
8e5481b5d5 Implement Intention to add @JvmOverloads (#860)
Implement Intention to add @JvmOverloads
Fixes #KT-11523
2016-04-29 14:32:00 +03:00
Kirill Rakhman
f309920af8 Add quickfix to make referenced primary constructor parameter a property
Fixes #KT-12089
2016-04-29 12:14:42 +02:00
Kirill Rakhman
1c5322bae4 Quick fix for SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE (#858)
* Quick fix for SUPERTYPE_IS_EXTENSION_FUNCTION_TYPE
Fixes #KT-11876

* Revert accidental change

* Remove period

* ConvertExtensionToFunctionTypeFix: more tests
2016-04-29 12:47:38 +03:00
Valentin Kipyatkov
b551886889 Code cleanup: removed redundant semicolons 2016-04-29 11:26:25 +03:00
Valentin Kipyatkov
e1d8c72aa7 KT-10770 IDEA cannot keep import if a type is only referenced by kdoc.
#KT-10770 Fixed
2016-04-29 11:23:23 +03:00
Valentin Kipyatkov
cd2161b37d KT-12069 Specify language for all Kotlin code inspections
#KT-12069 Fixed
2016-04-29 11:23:23 +03:00
Valentin Kipyatkov
306edef23c Highlighting of redundant semicolons
#KT-5010 Fixed
2016-04-29 11:23:22 +03:00
Valentin Kipyatkov
77033f52ee ConvertPropertyInitializerToGetterIntention to not be available inside lambda initializer 2016-04-29 11:23:22 +03:00
Kirill Rakhman
4a619db721 Add intrinsic for KCallable.name property Fixes #KT-11531 2016-04-28 23:03:00 +03:00
Nikolay Krasko
b8e2533b58 Check that injection with annotation on parameter doesn't trigger not-stubbed psi 2016-04-28 16:11:35 +03:00
Nikolay Krasko
dd8b667360 Don't analyze function body if only parameter analyze is requested 2016-04-28 16:11:33 +03:00
Nikolay Krasko
faa2745731 Missing new line in error message (KT-12070)
#KT-12070 Fixed
2016-04-28 16:11:27 +03:00
Nikolay Krasko
018622e552 Use partial resolve for annotation search 2016-04-28 16:06:35 +03:00
Nikolay Krasko
3d8abd874b Use kotlin specific methods for pattern creation 2016-04-28 16:06:34 +03:00
Nikolay Krasko
73024429dc Refactoring: use language injection in ResolveElementCache.kt 2016-04-28 16:06:32 +03:00
Nikolay Krasko
62ede15241 Refactoring: return injection tests to single test-class 2016-04-28 16:06:30 +03:00
Michael Bogdanov
adda3ef69d Ability to run tests via adb 2016-04-28 15:02:33 +03:00
Michael Bogdanov
d4a7e36722 Android tests exclusion 2016-04-28 15:02:33 +03:00
Michael Bogdanov
896429a959 Switch to gradle from gradle wrapper, use https instead of http to download files 2016-04-28 15:02:32 +03:00
Michael Bogdanov
309348c9be Code clean 2016-04-28 15:02:32 +03:00
Michael Bogdanov
7d77f9171c Wait some time before emulator stop, diabled emulator log redirection (otherise result reports would be inconsistent)
~emulator
2016-04-28 15:02:31 +03:00
Michael Bogdanov
be1cb406d2 More logging on adb server start 2016-04-28 15:02:31 +03:00
Michael Bogdanov
db6c72d886 Support WITH_REFLECT and 'Class.forName' android tests 2016-04-28 15:02:30 +03:00
Michael Bogdanov
ed3d874f88 Wait until emulator booted 2016-04-28 15:02:30 +03:00
Michael Bogdanov
2992e23508 Use gradle build instead of ant one for android test module 2016-04-28 15:02:29 +03:00
Michael Bogdanov
3ad8b5be91 Ecluded test from compilation: android report bad class file cause of missed generic parameter definition 2016-04-28 15:02:29 +03:00
Michael Bogdanov
0abdc75477 Temporary disable lint checks cause of problem with implicit 'stream' import 2016-04-28 15:02:28 +03:00
Michael Bogdanov
3cebb7c804 Added support for tests with 'JvmName' annotation 2016-04-28 15:02:28 +03:00
Michael Bogdanov
11e42c6472 Call 'invokeBox' with proper class instance (not try to find it via reflection) 2016-04-28 15:02:27 +03:00
Michael Bogdanov
1eb3d2ec1d Added gradle android test project 2016-04-28 15:02:27 +03:00
Michael Bogdanov
1f84ff7fa6 Writing android sdk to local.properties 2016-04-28 15:02:26 +03:00
Kirill Rakhman
2629d23576 Add quickfix to add 'toString' (#866)
Fixes #KT-12121
2016-04-28 12:15:39 +03:00
Valentin Kipyatkov
a51fe9a9b0 Minor change on code review 2016-04-27 23:47:35 +03:00
Valentin Kipyatkov
45d460a5fa Dropped redundant code which was required for lambda signature completion when the syntax was different
#KT-12033 Fixed
2016-04-27 23:47:34 +03:00
Valentin Kipyatkov
40022e8f7a KT-12068 Special completion item for "[]" get-operator access
#KT-12068 Fixed
2016-04-27 23:47:34 +03:00
Valentin Kipyatkov
deb75b3f18 Completion to complete non-imported classes on the first invocation
#KT-8527 Fixed
2016-04-27 23:47:33 +03:00
Valentin Kipyatkov
f0dd70d94c KT-11680 Code completion of label for existing return with value inserts redundant whitespace
#KT-11680 Fixed
 #KT-9993 Fixed
2016-04-27 23:46:26 +03:00
Sergey Mashkov
e9758099ce Maven: rebase to master 2016-04-27 19:40:58 +03:00
Sergey Mashkov
d9dabeed76 Maven: review 2016-04-27 19:40:57 +03:00
Sergey Mashkov
072ec26452 Maven: convert to Kotlin 2016-04-27 19:40:57 +03:00
Sergey Mashkov
78d0f83f71 Maven: reorganize code: move classes across packages 2016-04-27 19:40:57 +03:00
Sergey Mashkov
eb789304b6 Maven: inspection maven plugin and ide plugin should have the same version 2016-04-27 19:40:56 +03:00
Sergey Mashkov
aa156c08c6 Maven: versions inspection: kotlin plugin and library should have the same version 2016-04-27 19:40:56 +03:00
Sergey Mashkov
6caef7716f Maven: kotlin-maven-plugin configuration source dirs completion 2016-04-27 19:40:55 +03:00
Sergey Mashkov
d097c3e9f1 KT-11743 Intention to replace kotlin-test with kotlin-test-junit 2016-04-27 19:40:55 +03:00
Sergey Mashkov
b8327f19b8 Maven: never generate JUnit (but keep code so we will be able to introduce checkbox in configurator to optionally add junit and chose version) 2016-04-27 19:40:55 +03:00
Sergey Mashkov
c30fc78f8e KT-11731 Default maven integration doesn't include documentation
trigger sources download for stdlib/runtime/test at project import
2016-04-27 19:40:54 +03:00
Sergey Mashkov
fc197cd616 Maven: extract maven support to the separate module 2016-04-27 19:40:54 +03:00
Sergey Mashkov
dfaba1d0aa KT-11556 "Kotlin not configured" in Kotlin/JS project 2016-04-27 19:40:54 +03:00
Sergey Mashkov
64a63476f7 KT-11701 Add Maven Dependency quick fix could be supported in Kotlin sources
~ initial draft
2016-04-27 19:40:53 +03:00
Sergey Mashkov
01fa6d5718 KT-11436 "Choose Configurator" control opens dialogs with inconsistent modality (linux) 2016-04-27 19:40:53 +03:00
Sergey Mashkov
addc73dba5 KT-11643 Inspections and intentions to fix misconfigured Maven pom
make misconfigured maven project configurable
2016-04-27 19:40:52 +03:00
Sergey Mashkov
0834435248 KT-11643 Inspections and intentions to fix misconfigured Maven pom 2016-04-27 19:40:52 +03:00
Sergey Mashkov
7d649b4327 KT-9492 Configuring multiple Maven Modules
- kotlin mavne configurator shouldn't configure child modules but parents as children inherit everything
2016-04-27 19:40:52 +03:00
Sergey Mashkov
7da92872a8 KT-11642 Kotlin Maven configurator tags order 2016-04-27 19:40:51 +03:00
Mikhail Glukhikh
918f843cd0 Correct handling of empty super type list while adding an entry #KT-12011 Fixed 2016-04-27 18:44:42 +03:00
Mikhail Glukhikh
5c9d6fd460 UAST: unnecessary 'val' removed from constructor 2016-04-27 18:42:08 +03:00
Mikhail Glukhikh
a4be89e5fd JS: unnecessary 'val' removed from constructor 2016-04-27 18:42:04 +03:00
Mikhail Glukhikh
ee46c34a5e Android: unnecessary 'val's removed from constructors 2016-04-27 18:42:00 +03:00
Mikhail Glukhikh
5a66ef2126 Core & compiler: unnecessary 'val's removed from constructors 2016-04-27 18:41:56 +03:00
Mikhail Glukhikh
84a3f729ca IDEA: unnecessary 'val's removed from constructors 2016-04-27 18:41:52 +03:00
Mikhail Glukhikh
1744897561 Can be parameter inspection: use inside object literals is now handled as "property use" 2016-04-27 18:41:48 +03:00
Mikhail Glukhikh
64ae9af3a4 Can be parameter inspection: use in selector position is now always handled as "property use" 2016-04-27 18:41:45 +03:00
Mikhail Glukhikh
795b92461e Can be parameter inspection: use inside function literals is now handled as "property use" #KT-11949 Fixed 2016-04-27 18:41:41 +03:00
Ilya Gorbunov
ae2e3f1811 kotlin-test: add assertFails overload with message. 2016-04-27 18:22:20 +03:00
Ilya Gorbunov
4b533b297e reified assertFailsWith available in kotlin-test for JS
#KT-11346
2016-04-27 18:22:20 +03:00
Ilya Gorbunov
409094f0f7 Make stdlib functions dependent on reified is checks available in JS.
#KT-11346 Fixed
2016-04-27 18:22:20 +03:00
Ilya Gorbunov
a5fd95c7d9 JS: Make AbstractList.size pure abstract.
#KT-7228 Fixed
2016-04-27 18:22:20 +03:00
Mikhail Glukhikh
6b945ba103 Regular checkType() is now called during condition analysis, TYPE_MISMATCH_IN_CONDITION removed #KT-11998 Fixed 2016-04-27 18:12:28 +03:00
Alexey Sedunov
e6ab2f1c2d Change Signature: Do not use local declaration as a context for a type code fragment 2016-04-27 15:48:42 +03:00
Stanislav Erokhin
c6cb5175a4 Minor. Use capability instead of capabilities. 2016-04-27 14:13:59 +03:00
Stanislav Erokhin
926da77abe Refactoring. Remove getSubstitution from KotlinType. 2016-04-27 14:13:59 +03:00
Stanislav Erokhin
5fe48313e9 Refactoring. Merge CustomSubstitutionCapability, CustomFlexibleRendering and RawTypeTag into RawTypeCapability. 2016-04-27 14:13:58 +03:00
Alexander Udalov
922f133d75 Perform version override earlier and only on teamcity 2016-04-27 10:55:33 +03:00
Mikhail Zarechenskiy
69b4837830 Move part of code that related to 'Optimize imports' action to ide-common module 2016-04-26 20:46:06 +03:00
Mikhail Zarechenskiy
b677e9d2ea Get rid of guava's collections and dependency on Idea's settings from util function
This commit prepares 'prepareOptimizedImports' function to
move to the ide-common module to reuse it in the Eclipse plugin
2016-04-26 20:46:06 +03:00
Nikolay Krasko
09af830476 Do no analyze for annotation search if no annotation entries present 2016-04-26 20:43:26 +03:00
Nikolay Krasko
dbdea86d78 Add note about fixing deadlock in debugger (KT-12067) 2016-04-26 20:43:26 +03:00
Nikolay Krasko
2b51b526ba Enable injection in injection tests 2016-04-26 20:43:26 +03:00
Nikolay Krasko
64c46a33c4 Make parameter injection work for Java methods 2016-04-26 20:43:26 +03:00
Nikolay Krasko
3e35c60406 First version of injection with annotation on parameter 2016-04-26 20:43:26 +03:00
Nikolay Krasko
6ca9ba9e30 Implement withAnnotation() pattern for parameter pattern 2016-04-26 20:43:26 +03:00
Nikolay Krasko
8eda5e0ea5 Refactoring replace trimMargin() with trimIndent(). This is preparation for injection bootstrapping in tests. 2016-04-26 20:43:26 +03:00
Nikolay Krasko
a6d129b006 Add write action for shorten references in finish template after building call (KT-12056)
Write action was removed in idea 146

#KT-12056 Fixed
2016-04-26 20:43:26 +03:00
Nikolay Krasko
30e8c67d01 Add write action for shortening references in templates (KT-11418)
Write action was removed in idea 146.

#KT-11418 Fixed
2016-04-26 20:43:26 +03:00
Nikolay Krasko
cae366f97e Revert write actions in utility code (EA-81892)
Revert commits:
ab0fe0a900
97a97614b5
2016-04-26 20:43:26 +03:00
Nikolay Krasko
7327275bf4 Auto-test running intention isApplicable() from pooled thread 2016-04-26 20:43:26 +03:00
Alexey Sedunov
9858b178c0 Change Signature: Fix context element for type code fragments to avoid bogus "Type can not be resolved" warnings
#KT-11862 Fixed
2016-04-26 20:11:59 +03:00
Zalim Bashorov
3048c293d0 Minor: fix tests 2016-04-26 19:11:05 +03:00
Alexey Andreev
76cfe8cabc KT-11100 Fix generation of name of FakeCallableDescriptorForObject that is presumably used to express invoke operator on (companion) objects 2016-04-26 17:04:09 +03:00
Alexey Sedunov
12987de156 Spring Support: Replace accessor name with property name when processing usages in Kotlin files
#KT-11880 Fixed
2016-04-26 16:15:32 +03:00
Kirill
6e08f06bfd Format spaces in infix call (KT-12018)
#KT-12018 Fixed
2016-04-26 15:21:33 +03:00
Kirill
01b754b318 Format spaces in cast expression (KT-12035)
#KT-12035 Fixed
2016-04-26 15:21:33 +03:00
Alexey Sedunov
a00c524074 Move: Optimize imports after applying "Move declaration to separate file" intention
#KT-10174 Fixed
2016-04-26 13:59:11 +03:00
Alexey Sedunov
676000cdf7 Move: Keep original file package name when moving top-level declarations to separate file (provided it's not ambiguous)
#KT-10950 Fixed
2016-04-26 13:59:10 +03:00
Alexey Sedunov
332fe29e94 Move: Allow choosing source root in "Move file to directory" intention
#KT-11512 Fixed
2016-04-26 13:59:08 +03:00
Alexey Sedunov
aaa873f227 Move: Convert implicit receiver to this when moving class member to companion object
#KT-11483 Fixed
2016-04-26 13:59:07 +03:00
Alexey Sedunov
6faedc1adc Move: Add missing write action
#KT-11482 Fixed
2016-04-26 13:59:05 +03:00
Nikolay Krasko
6b7aa98980 Test data modification: Don't compute compiled bytecode for same expression twice
Result of dc9fa6d9ac commit.
Previously computation were saved into the map that were invalidated by the computation. Now map is recreated after computation and result is saved into it.
2016-04-25 19:50:22 +03:00
Zalim Bashorov
658eac2d12 Add Unit to compiled part of Kotlin JS stdlib and don't show "Kotlin not configured" for Kotlin JS projects
#KT-11556 Fixed
2016-04-25 17:58:51 +03:00
Denis Zharkov
fc25d70edc Expand JVM built-ins blacklist
Add Enum.getDeclaringClass, Enum.finalize and List.sort
2016-04-25 17:41:08 +03:00
Denis Zharkov
62f2bddda9 Add AdditionalBuiltInsMembersSignatureListsTest
This test checks that every signature listed within
JvmBuiltInsAdditionalClassPartsProvider corresponds to some real JDK member
2016-04-25 17:41:08 +03:00
Denis Zharkov
7d729a1fe0 Minor. Inline helper properties 2016-04-25 17:41:08 +03:00
Denis Zharkov
0d4a132be5 Minor. Regenerate tests 2016-04-25 17:41:08 +03:00
Denis Zharkov
9bf2538e4c Introduce predefined enhancement info
It can be used to specify enhanced signature for standard JDK methods
without them be actually annotated

 #KT-9194 In Progress
 #KT-5175 In Progress
 #KT-10370 In Progress
 #KT-7127 In Progress
2016-04-25 17:41:08 +03:00
Denis Zharkov
3bda613317 Minor. Rename BuiltInClassesAreSerializableOnJvm -> JvmBuiltInsAdditionalClassPartsProvider 2016-04-25 17:41:08 +03:00
Denis Zharkov
a1d4214a39 Use fq-names instead of descriptors when computing ambigious names
Because there can be different descriptors that are essentially equal
(from different modules)

See J2K test: testNullableField
2016-04-25 17:41:08 +03:00
Denis Zharkov
28e33aaf56 Use weak-reference based SLRU cache for module resolvers
Create new module resolver iff it's weak reference is collected,
but at the same time keep hot modules in SLRU map not to give them be collected
2016-04-25 17:41:08 +03:00
Denis Zharkov
2819c69bc1 Introduce BLACK_LIST_CONSTRUCTOR_SIGNATURES
To prevent loading senseless constructors to built-in classes from JDK
2016-04-25 17:41:08 +03:00
Denis Zharkov
1efed64014 Use JVM signatures instead of FQ-names for additional built-ins 2016-04-25 17:41:08 +03:00
Denis Zharkov
8cf29ea4f3 Extract JVM descriptors type mapping from backend to core
Also unbind it from ASM types
2016-04-25 17:41:08 +03:00
Denis Zharkov
12bbbb6ff1 Refactor Java resolver components
- Move components from LazyJavaResolverContext to JavaResolverComponents
- Drop LazyJavaClassResolver replacing it's usages with module resolver
(now enum entries from another module as annotation arguments are being resolved, see test)
2016-04-25 17:41:08 +03:00
Denis Zharkov
bbbc910e02 Load additional built-in classes constructors from JDK
#KT-9194 In Progress
 #KT-5175 In Progress
 #KT-10370 In Progress
 #KT-7127 In Progress
2016-04-25 17:41:08 +03:00
Denis Zharkov
193dd06f50 Use different names for mockJDK and fullJDK
It's needed because they both used in one project in some tests,
while IDEA model relies on assumption that JDK's names are unique
2016-04-25 17:41:08 +03:00
Denis Zharkov
adff42add3 Minor. Add absent dependency: J2K -> tests-common 2016-04-25 17:41:08 +03:00
Denis Zharkov
de228da077 Add library invalidation in IDE tests setUp 2016-04-25 17:41:08 +03:00
Denis Zharkov
8d697395cd Minor. Replace for-loop with 'single' call 2016-04-25 17:41:08 +03:00
Denis Zharkov
7960561c4b Minor. Use SAM-constructor to overcome overload ambiguity
There is an ambiguity since 'forEach' method appeared at Iterable,
that is supertype of Query
2016-04-25 17:41:08 +03:00
Denis Zharkov
b94baede38 Minor. Fix rendered Throwable member scope 2016-04-25 17:41:08 +03:00
Denis Zharkov
5bc5722051 Load additional JDK functions into built-ins member scope
#KT-5990 Fixed
 #KT-7127 Fixed
 #KT-10370 Fixed
2016-04-25 17:41:08 +03:00
Denis Zharkov
137847e0c9 Minor. Refactor DeserializedMemberScope.addNonDeclaredDescriptors 2016-04-25 17:41:08 +03:00
Denis Zharkov
f104be16cf Minor. Keep substitution in CopyConfiguration instead of originalSubstitutor 2016-04-25 17:41:08 +03:00
Denis Zharkov
128dd43dbd Minor. Move LoadBuiltinsTest testData to separate directory 2016-04-25 17:41:08 +03:00
Denis Zharkov
e316ab2ee6 Refactor function descriptors copy mechanism
Pull up CopyBuilder to interface and inline some custom usages
2016-04-25 17:41:08 +03:00
Denis Zharkov
dbc8830acd Fix ResolveTest
Compare descriptors by their FQ-names instead of references
2016-04-25 17:41:08 +03:00
Denis Zharkov
51a4b81d3e Minor. Rename AdditionalSupertypes -> AdditionalClassPartsProvider
And relevant methods
2016-04-25 17:41:08 +03:00
Denis Zharkov
c918b3e1ae Minor. Replace type entries of BuiltInsPackageFragment with interface 2016-04-25 17:41:08 +03:00
Denis Zharkov
7fe5a9db8d Remove JavaToKotlinClassMap dependency on built-ins instance 2016-04-25 17:41:08 +03:00
Denis Zharkov
5bf39689e9 Replace irrelevant usages of JvmBuiltIns.Instance with DefaultBuiltIns.Instance 2016-04-25 17:41:08 +03:00
Denis Zharkov
c667f50741 Delete TargetPlatform.builtins
Replace it's usages with relevant singleton reference
2016-04-25 17:41:08 +03:00
Denis Zharkov
ef18d64931 Parametrize module creation by platform with built-ins 2016-04-25 17:41:08 +03:00
Denis Zharkov
7f860fa051 Manually set up built-ins for decompiler 2016-04-25 17:41:08 +03:00
Denis Zharkov
c4a899d9a4 Get rid of some targetPlatform.builtIns usages
Retrieve builtIns from module itself when adding dependencies on them
2016-04-25 17:41:08 +03:00
Denis Zharkov
e97fa929ea Minor. Replace '== JvmPlatform' with 'is JvmPlatform' 2016-04-25 17:41:08 +03:00
Denis Zharkov
e2db5d9a01 Get rid of TargetPlatform.builtIns usages in IDE
Retrieve them through resolution facade instead of platform
2016-04-25 17:41:08 +03:00
Michael Bogdanov
3858515e44 Added kotlin-test.jar to android module dependency 2016-04-25 17:39:13 +03:00
Michael Bogdanov
b092c04145 Removed debug counter 2016-04-25 17:39:13 +03:00
Stanislav Erokhin
f9130ae133 Do not force calculation of lower and upper bounds in java flexible type. 2016-04-25 15:28:49 +03:00
Stanislav Erokhin
45ac1d2cb5 Refactoring. Remove FlexibleTypeFactoryDeserializer. 2016-04-25 15:28:49 +03:00
Stanislav Erokhin
a6a9caa3cd Minor. Remove Dynamicity. 2016-04-25 15:28:48 +03:00
Stanislav Erokhin
ca74f0d86e Add assertion into DynamicTypeFactory about type range. 2016-04-25 15:28:48 +03:00
Stanislav Erokhin
8f32eeb663 Refactoring. Merge Specificity and NullAwareness into Flexibility. 2016-04-25 15:28:47 +03:00
Stanislav Erokhin
feec3566a4 Refactoring. Minor refactoring and cleanup in FlexibleTypes. 2016-04-25 15:28:47 +03:00
Stanislav Erokhin
a1d052b8fa Refactoring. Remove FlexibleTypeFactory.DEFAULT and refactor flexible type creation by special fq-name for tests. 2016-04-25 15:28:46 +03:00
Stanislav Erokhin
0a4ad3f267 Refactoring. Rename FlexibleTypeCapabilities -> FlexibleTypeFactory. Also use factory.create instead of DelegatingFlexibleType.create. 2016-04-25 15:28:46 +03:00
Stanislav Erokhin
c25e2e34a2 Optimization. Do not create objects for flexible type capabilities. 2016-04-25 15:28:45 +03:00
Michael Bogdanov
75d7390a94 Rollback: set permissions via 'chmod' 2016-04-25 14:33:22 +03:00
Michael Bogdanov
18f90a331c Run android test configuration with java 8 2016-04-25 14:33:21 +03:00
Michael Bogdanov
4e95a52152 'generators' dependency replaced with 'descriptors.loader.java' in 'android-test' module 2016-04-25 14:33:21 +03:00
Michael Bogdanov
af2a3b14c7 Temporary exclude 'box' test with self imports 2016-04-25 14:33:20 +03:00
Michael Bogdanov
9238b7ba80 Use mock jdk for tests that not require full one 2016-04-25 14:33:20 +03:00
Michael Bogdanov
bc16be9735 Support for WITH_RUNTIME test on android 2016-04-25 14:33:19 +03:00
Michael Bogdanov
6228b11048 Properly patch package name in case of file annotations on default package 2016-04-25 14:33:19 +03:00
Alexey Sedunov
797465a06b Rename: Do not use Change Signature for parameter renaming 2016-04-25 10:38:40 +03:00
Alexey Sedunov
d456aa6ba8 Rename: Fix Find Usages/Rename for parameter references in XML files
#KT-11967 Fixed
2016-04-25 10:38:39 +03:00
Alexey Sedunov
6a1387b9b9 Safe Delete: Delete interface reference from super-type list when applying Safe Delete to Java interface
#KT-11282 Fixed
2016-04-25 10:38:38 +03:00
Alexey Sedunov
613a274c90 Safe Delete: Fixed usages search when applied to simple enum entries
#KT-11816 Fixed
2016-04-25 10:38:37 +03:00
Alexey Sedunov
b35834dd18 Rename: Fixed rename of Kotlin enum constants/@JvmField properties through Java references
#KT-11817 Fixed
2016-04-25 10:38:35 +03:00
Alexey Sedunov
070923f03a Introduce Parameter: Fixed title of declaration chooser
#KT-11617 Fixed
2016-04-25 10:38:34 +03:00
Alexey Sedunov
cc5c3c2353 Rename: Fixed rename of Java getters/setters through synthetic property references in Kotlin
#KT-8817 Fixed
2016-04-25 10:38:33 +03:00
Mikhail Glukhikh
a45165838a Build fix: quick fix multi file test 2016-04-24 13:09:37 +03:00
Mikhail Glukhikh
cac986baf7 Refactoring: change visibility on exposure 2016-04-23 20:48:25 +03:00
Mikhail Glukhikh
b1195fc519 Change to private fix made high priority action 2016-04-23 20:48:00 +03:00
Mikhail Glukhikh
d8e47bd520 Change visibility fix message (quotes) + list of available actions in tests 2016-04-23 20:25:18 +03:00
Mikhail Glukhikh
7e80575a08 Minor refactoring: MakeVisibleFactory 2016-04-23 12:57:47 +03:00
Mikhail Glukhikh
e6a7cd97ff Change visibility on exposure now reports all possible visibilities 2016-04-23 10:01:10 +03:00
Mikhail Glukhikh
a2501463a8 Minor refactoring: change visibility on exposure (exposing -> user) 2016-04-23 10:01:08 +03:00
Mikhail Glukhikh
0217e6104f Refactoring: IncreaseExposed + DecreaseExposing = ChangeVisibilityOnExposure 2016-04-23 10:01:05 +03:00
Mikhail Glukhikh
8938752cf9 Make visible now suggests all possible visibilities 2016-04-23 10:01:02 +03:00
Mikhail Glukhikh
d5b9a336a3 Decrease visibility fix is now active for exposed visibility errors #KT-11920 Fixed 2016-04-23 10:00:59 +03:00
Mikhail Glukhikh
934c374030 Refactoring: IncreaseVisibilityFix --> ChangeVisibilityFix + MakeVisibleFactory + IncreaseExposedVisibilityFactory 2016-04-23 10:00:56 +03:00
Mikhail Glukhikh
fe44671b6a KT-11920: Increase visibility fix is now active for exposed visibility errors 2016-04-23 10:00:53 +03:00
Alexander Udalov
04db491dd4 Update ChangeLog for 1.0.2 2016-04-22 21:22:57 +03:00
Yan Zhulanow
d478b90fb8 Lint: Fix KT-12009: IAE at JavaContext.getLocation() 2016-04-22 19:48:28 +03:00
Yan Zhulanow
9ea7a4f112 Lint: run inspections only for Kotlin 2016-04-22 19:48:28 +03:00
Yan Zhulanow
04ed20c574 Lint: Remove AssertDetector (unrelated to Kotlin) 2016-04-22 19:48:28 +03:00
Yan Zhulanow
cbe21ab568 Minor: Fix Uast blinking tests 2016-04-22 19:48:28 +03:00
Yan Zhulanow
16b831196a Fix EA-81689 2016-04-22 19:48:28 +03:00
Yan Zhulanow
4298559858 Minor: fix sparam -> setparam 2016-04-22 19:48:28 +03:00
Michael Bogdanov
ba1aab7e3e Temporary use ARMV7 target to run emulator 2016-04-22 18:22:52 +03:00
Michael Bogdanov
18b879102a Do nothing if there is no files to write 2016-04-22 18:22:52 +03:00
Michael Bogdanov
1b9fa25ac6 Temporary skip multi-file box tests and box tests with stdlib/reflection 2016-04-22 18:22:51 +03:00
Michael Bogdanov
82786bb97e Temporary exclude 'box' test with imports 2016-04-22 18:22:51 +03:00
Michael Bogdanov
518cc7aa7f Workaround for wrong recognized exception in result log 2016-04-22 18:22:50 +03:00
Michael Bogdanov
a9a917a99e Use 'kill -s 9' to finish process 2016-04-22 18:22:50 +03:00
Michael Bogdanov
a9ce6f71f6 Firstly try to stop emulator via adb then via kill process 2016-04-22 18:22:49 +03:00
Michael Bogdanov
10f557105b File name to package class mapping updated to new single file facade scheme 2016-04-22 18:22:48 +03:00
Michael Bogdanov
e9a2b8628c Added x86 abi to android tests 2016-04-22 18:22:48 +03:00
Michael Bogdanov
fbbb614e80 PermissionManager updated to new android tools structure 2016-04-22 18:22:47 +03:00
Michael Bogdanov
a17c2c5c0e SdkDownloader refactoring, updated to last android tools 2016-04-22 18:22:46 +03:00
Dmitry Petrov
f3c006a5f5 RedundantCoercionToUnitTransformer: do not create individual objects for each transformation. 2016-04-22 17:38:44 +03:00
Mikhail Glukhikh
6980d28eb0 Refactoring: ControlFlowInstructionsGenerator.handleJumpInsideTryFinally 2016-04-22 15:17:01 +03:00
Mikhail Glukhikh
d24528f6bb Control flow analysis: nested finally blocks now appear in correct order in CFG #KT-4764 Fixed 2016-04-22 15:16:57 +03:00
Mikhail Glukhikh
a5b428d9ce Refactoring: CFG.LexicalScope --> CFG.BlockScope #KT-11965 Fixed 2016-04-22 15:16:54 +03:00
Mikhail Glukhikh
cda4d2dcce CFG.LexicalScope minor refactoring 2016-04-22 15:16:50 +03:00
Nikolay Krasko
5f7f46ff6c Remove MaxPermSize parameter 2016-04-22 14:17:52 +03:00
Nikolay Krasko
dc9fa6d9ac Don't compute cached values under lock - this can cause a deadlock
Three threads needed to reproduce:
 - Thread 1. Doesn't hold RW lock, starts computation and locks the cached lock (L)
 - Thread 2. Holds R lock and want to get same computation result. It's now locked on (L)
 - Thread 3. Any thread that want to get W lock. It's now locked on because of Thread 2

If Thread 1. wants to get R lock it will be stacked because of Thread 3. It's sometimes not possible to get a read lock
while some thread is already waiting on W.
2016-04-22 14:17:52 +03:00
Nikolay Krasko
aafd009cbe More information in changelog about injection 2016-04-22 14:17:52 +03:00
Alexey Andreev
0869eb7ef3 KT-6201 KT-6203 KT-6326 KT-6777 Add test cases to prove that issues are no longer reproducible 2016-04-22 10:16:58 +03:00
Yan Zhulanow
33f9a0c798 Lint: Review changes 2016-04-21 20:08:46 +03:00
Yan Zhulanow
d7faef63b6 Lint: Fix KT-11922: ClassCastException: org.jetbrains.kotlin.descriptors.impl.SimpleFunctionDescriptorImpl cannot be cast to org.jetbrains.kotlin.descriptors.ClassDescriptor 2016-04-21 20:08:46 +03:00
Yan Zhulanow
a2b1eb7ee8 Lint: Fix KT-11919 ("Missing Parcelable CREATOR field" rule is not accurate) 2016-04-21 20:08:46 +03:00
Yan Zhulanow
33434a3c5b Lint: Fix KT-11939 (@SuppressLint("PrivateResource") doesn't work) 2016-04-21 20:08:46 +03:00
Yan Zhulanow
574aa5debe Lint: Fix KT-11924 (False positive on beginTransaction() should be completed with a commit() call) 2016-04-21 20:08:46 +03:00
Yan Zhulanow
35fca9171c Lint, Minor: Fix compilation 2016-04-21 20:08:46 +03:00
Yan Zhulanow
5008c6d8fc Lint, Uast: Fix Java function descriptor calculation KT-11923 2016-04-21 20:08:46 +03:00
Yan Zhulanow
aa06cd8f7d Lint: Fix EA-81466 2016-04-21 20:08:46 +03:00
Yan Zhulanow
64dbba8e2c Lint: Fix EA-81613, EA-81468 2016-04-21 20:08:46 +03:00
Michael Bogdanov
7335f2394b Sort result ranges in SMAP class 2016-04-21 17:32:03 +03:00
Michael Bogdanov
d945c47b63 Skip line numbers that couldn't be mapped by SourceMappers 2016-04-21 17:32:03 +03:00
Alexey Sedunov
021c88e5ff Find Usages: Fixed searching of Java usages for @JvmStatic properties and @JvmStatic @JvmOverloads functions
#KT-11736 Fixed
2016-04-21 16:40:19 +03:00
Alexey Sedunov
1635018fe7 Override/Implement: Use function body template when generating functions with default body
#KT-11807 Fixed
2016-04-21 16:40:17 +03:00
Alexey Sedunov
df07554764 Find Usages: Start read action for derived class search
#KT-11845 Fixed
2016-04-21 16:39:18 +03:00
Nikolay Krasko
39e6b893a7 Teach getOwnerFunction() in KtParamter work with stubs 2016-04-21 15:25:10 +03:00
Nikolay Krasko
c62d906d5c Minor: test methods rename 2016-04-21 15:25:09 +03:00
Nikolay Krasko
b0433b2904 Prevent stepping through indirect assignments in injection search 2016-04-21 15:25:08 +03:00
Nikolay Krasko
505c6624a7 Inject predefined places through usages 2016-04-21 15:25:06 +03:00
Nikolay Krasko
62ff67c2b0 Disable complex injection search in DFA == OFF mode 2016-04-21 15:25:05 +03:00
Nikolay Krasko
9590c9a10b Add note about injection feature to ChangeLog 2016-04-21 15:25:04 +03:00
Nikolay Krasko
d69d1f2c53 Support toRegex() standard function
#KT-8088 Fixed
2016-04-21 15:25:02 +03:00
Nikolay Krasko
6bea3923f5 Injection test refactoring 2016-04-21 15:25:01 +03:00
Nikolay Krasko
42084b0529 Allow injection for all Regex constructors
#KT-8088 In Progress
2016-04-21 15:25:00 +03:00
Nikolay Krasko
c6e48d8e59 First version of Kotlin patterns in injection
#KT-8088 In Progress
2016-04-21 15:24:58 +03:00
Mikhail Glukhikh
a12faf5baf KtDeclaration.containingClassOrObject now works correctly for primary constructor and its parameters #KT-11982 Fixed 2016-04-21 14:21:40 +03:00
Nikolay Krasko
454a8474f1 Write Action: Add write action for template finish processor (KT-11418) 2016-04-21 13:14:51 +03:00
Nikolay Krasko
97a97614b5 Write Action: Wrap import insertion with write action 2016-04-21 13:14:50 +03:00
Nikolay Krasko
ab0fe0a900 Write Action: Add write action for deleting qualifier in shortenReferences
Problem revealed after template listners are executed without write action
5c2c946265
2016-04-21 13:14:48 +03:00
Nikolay Krasko
143fd4ee08 Update until version for new idea build numbering 2016-04-21 13:14:47 +03:00
Alexey Andreev
7b76fa6103 KT-11030 Remove tests for diagnostics for local classes in JS backend 2016-04-20 18:12:25 +03:00
Alexey Andreev
ade5477c33 KT-11030 Initialization order of enum entries in JS now conforms to JVM backend 2016-04-20 18:12:25 +03:00
Alexey Andreev
87ea0bd0cb KT-11030 Minor code improvements 2016-04-20 18:12:25 +03:00
Alexey Andreev
166b985fca KT-11028 Add test for the issue 2016-04-20 18:12:24 +03:00
Alexey Andreev
4ac730e5ed KT-11030 Fix referencing wrong field generated for captured variable when this captured variable referenced both from constructor and non-constructor method. Avoid duplicate generation of call to delegated constructor. 2016-04-20 18:12:24 +03:00
Alexey Andreev
a5e0c70988 KT-11611 Prevent duplicate generation of default values of secondary constructor parameters 2016-04-20 18:12:23 +03:00
Alexey Andreev
7afca74b94 KT-11030 When constructor of object expression calls super constructor, place this call at object creation instead of object's constructor. This allows to capture outer this reference properly in certain cases. JVM backend uses the same approach 2016-04-20 18:12:23 +03:00
Alexey Andreev
03dc9c0fa4 KT-11030 Refactor translation of class to support secondary constructors of local classes 2016-04-20 18:12:23 +03:00
Alexey Andreev
e305898f84 KT-11030 Simplify code and refactor generation of object expressions 2016-04-20 18:12:22 +03:00
Alexey Andreev
c1c57a06bb KT-11030 Refactoring code to properly implement secondary constructors in local classes 2016-04-20 18:12:22 +03:00
Alexey Andreev
b39c16cb6c KT-11030 Fix translation of secondary constructors of inner classes 2016-04-20 18:12:22 +03:00
Alexey Andreev
7af4b2fdb2 KT-11030 Fix subclassing of local class by local class 2016-04-20 18:12:21 +03:00
Alexey Andreev
d9504dfe2b KT-11030 When local function is declared inside constructor, capture this into this function 2016-04-20 18:12:21 +03:00
Alexey Andreev
a74c613ec5 KT-11030 Make copy method of local data classes to copy captured variables 2016-04-20 18:12:21 +03:00
Alexey Andreev
a21b5ad4e6 KT-11030 Fix capturing of local variables via by expression, i.e. object : ClassName by v where v is local variable 2016-04-20 18:12:20 +03:00
Alexey Andreev
af0280ca7a KT-11030 Repair support of enums. Minor refactoring of ClassTranslator 2016-04-20 18:12:20 +03:00
Alexey Andreev
47dde9520d KT-11030 Don't capture companion objects into closure 2016-04-20 18:12:15 +03:00
Alexey Andreev
1bded9d66f KT-11030 Fix translation of FQN of native companion objects 2016-04-20 18:01:08 +03:00
Alexey Andreev
6967ebcc8c KT-11030 Copy static properties of object's class to instance of object (think about moving local functions to member methods in objects) 2016-04-20 18:01:08 +03:00
Alexey Andreev
00292f4125 KT-11030 Avoid name clash between member fields and fields that store closure of local classes 2016-04-20 18:01:07 +03:00
Alexey Andreev
337078faf3 KT-11030 Unify concept of objects and companion objects. Fix order of initialization of nested objects. 2016-04-20 18:01:07 +03:00
Alexey Andreev
8e7d949dd4 KT-11030 Implements closures in classes. Represent local object literals as classes 2016-04-20 18:01:07 +03:00
Alexey Andreev
1f8c3375fe KT-11030 Implements local classes that don't have closure 2016-04-20 18:01:06 +03:00
Alexey Andreev
7ca6102cac KT-11030 Disable error reporting of local classes in JS backend 2016-04-20 18:01:06 +03:00
Alexey Andreev
3e11209d8a KT-11030 Borrow test for local classes from JVM backend 2016-04-20 17:49:03 +03:00
Michael Bogdanov
9a8474392d Code clean 2016-04-20 17:07:17 +03:00
Michael Bogdanov
2cec779c14 'visitLineNumber' replaced with 'mapLineNumber' in SourceMapper 2016-04-20 17:07:16 +03:00
Michael Bogdanov
c70e1c6065 SourceMappers refactoring 2016-04-20 17:07:15 +03:00
Michael Bogdanov
bb5c24eae5 Old SourceMappers replaced with new ones 2016-04-20 17:07:15 +03:00
Michael Bogdanov
68f5e4d10e Added debug strata to test data 2016-04-20 17:07:14 +03:00
Michael Bogdanov
9fe9a1742b Debugger navigation strata processing update 2016-04-20 17:07:14 +03:00
Natalia Ukhorskaya
02c5e005fe Debugger: navigate to call site of inline function
#KT-11438 Fixed
2016-04-20 17:07:13 +03:00
Michael Bogdanov
bdd24cfa7d Temporary rollback change cause of merge conflict 2016-04-20 17:07:12 +03:00
Michael Bogdanov
af68f3d019 Added additional strata for stacktraces 2016-04-20 17:07:12 +03:00
Michael Bogdanov
f6edf311d7 Optimization in NestedSourceMapper 2016-04-20 17:07:11 +03:00
Michael Bogdanov
636c13adde Small optimization in InlineLambdaSourceMapper 2016-04-20 17:07:11 +03:00
Michael Bogdanov
0a46cea799 TODO: optimize smap - do preproccessing 2016-04-20 17:07:10 +03:00
Michael Bogdanov
faca68297c Updated line numbers tests 2016-04-20 17:07:09 +03:00
Michael Bogdanov
ab2d3665a4 SourceMapper api refactoring 2016-04-20 17:07:08 +03:00
Michael Bogdanov
225e90bbdf Removed redundant cache, small rename refactoring after removing 2016-04-20 17:07:08 +03:00
Michael Bogdanov
286da1fc5f Properly calculate maxUsedValue 2016-04-20 17:07:07 +03:00
Michael Bogdanov
dfabad324b Additional checker for smap 2016-04-20 17:07:07 +03:00
Michael Bogdanov
ff820bddc0 New source mapping 2016-04-20 17:07:06 +03:00
Valentin Kipyatkov
cb615c557a Minor change on code review 2016-04-20 14:30:54 +03:00
Valentin Kipyatkov
e6580b0cdb Simplified code 2016-04-20 14:30:54 +03:00
Valentin Kipyatkov
1535e8ad90 KT-11955 Copy/Paste inserts FQ-name
#KT-11955 Fixed
2016-04-20 14:30:54 +03:00
Valentin Kipyatkov
364a8801a3 Correct keyword completion after try in assignment 2016-04-20 14:30:54 +03:00
Valentin Kipyatkov
4f9f5c205f Added flags "runForWholeFile" for inspections into XML because overriding method does not work 2016-04-20 14:30:53 +03:00
Valentin Kipyatkov
a68dbe78d8 KT-11594 "Add non-null asserted (!!) call" applied to unsafe cast to nullable type causes AE at KtPsiFactory.createExpression()
#KT-11594 Fixed
2016-04-20 14:30:53 +03:00
Valentin Kipyatkov
b5e89713cd KT-11275 Inconsistent behaviour when using lambda calls with function arguments without parens
#KT-11275 Fixed
2016-04-20 14:30:53 +03:00
Valentin Kipyatkov
50e7079efc Better message for CanBeValInspection 2016-04-20 14:30:53 +03:00
Valentin Kipyatkov
ecdaaea88d Never report companion object as unused
#KT-11366 Fixed
2016-04-20 14:30:52 +03:00
Alexey Tsvetkov
f2ba83adf2 Minor: slightly increase memory limit for gradle daemon test 2016-04-20 13:44:51 +03:00
Mikhail Glukhikh
771fb0ace2 Compiler warning on identical enum constant / is type entries #KT-4829 Fixed 2016-04-20 12:21:31 +03:00
Mikhail Glukhikh
d7ecd12737 Minor refactoring: PatternMatchingTypingVisitor 2016-04-20 12:21:27 +03:00
Mikhail Glukhikh
5ec7b5bef0 Minor refactoring: WhenChecker 2016-04-20 12:21:22 +03:00
Dmitry Petrov
420c7a0285 KT-11111:
- override by a final inline fun is a warning
- override by a fun with reified type parameters is an error
2016-04-20 11:59:03 +03:00
Dmitry Petrov
ef0f512201 java 2 kt: InlineAnalyzerExtension, convert 2016-04-20 11:59:03 +03:00
Dmitry Petrov
4c1694493a java 2 kt: InlineAnalyzerExtension, rename 2016-04-20 11:59:02 +03:00
Nikolay Krasko
2e993a0e1e Reformat template after end 2016-04-19 21:28:02 +03:00
Nikolay Krasko
f2a17bc4c2 Formatter doesn't handle space before angle bracket in method definition (KT-11961)
#KT-11961 Fixed
2016-04-19 21:28:00 +03:00
Nikolay Krasko
1baed30ef6 Remove outdated plugin configuration
The idea was to run idea with JRE 1.7 instead of 1.6, but now main IDEA run configuration executes under JRE 1.8.
2016-04-19 21:27:59 +03:00
Alexey Sedunov
548d0cd4e5 Spring Support: Model diagram support for Kotlin classes
#KT-11692 In Progress
2016-04-19 20:27:42 +03:00
Alexey Sedunov
38522b09ce Code Insight: Allow properties with custom setters to be used in generated equals/hashCode/toString
#KT-11908 Fixed
2016-04-19 20:27:41 +03:00
Alexey Sedunov
beb5d5e271 Create from Usage: Suggest "Create secondary constructor" on NONE_APPLICABLE error
#KT-11866 Fixed
2016-04-19 20:27:39 +03:00
Alexey Sedunov
aa4bfadfb1 Intentions: Implement "Introduce local variable" intention
#KT-11768 Fixed
2016-04-19 20:27:37 +03:00
Alexey Sedunov
d75edb9876 Override/Implement Action: Generate abstract overrides for Any members inside of Kotlin interfaces
#KT-11659 Fixed
2016-04-19 20:27:35 +03:00
Alexey Sedunov
3c79eab2fd Line Markers: Show recursion line markers for extension function calls with different receivers
#KT-11495 Fixed
2016-04-19 20:27:33 +03:00
Alexey Sedunov
c93e13e28d JUnit Support: Allow running multiple Kotlin classes as well as running mixtures of Kotlin and Java classes
#KT-11155 Fixed
2016-04-19 20:27:32 +03:00
Alexey Sedunov
a65026f584 Introduce Parameter: Run usages search under progress manager
#KT-11145 Fixed
2016-04-19 20:27:29 +03:00
Alexey Sedunov
754e7cac52 Light Classes: Replace accessor with property name when renaming KtProperty/KtParameter through its light methods
#KT-11880 Fixed
2016-04-19 20:27:28 +03:00
Alexey Sedunov
c21dff66aa Spring Support: Allow injection of SpEL into string literals with escape sequences
#KT-11904 Fixed
2016-04-19 20:27:26 +03:00
Alexey Sedunov
68776be186 Find Usages: Drop obsolete assertion
#KT-11895 Fixed
2016-04-19 20:27:23 +03:00
Yan Zhulanow
9b1402d804 Fix "No error on increment or augmented assignment when 'get' is an operator but 'set' is not" #KT-11300 2016-04-19 19:24:38 +03:00
Yan Zhulanow
371e80bcba Android Extensions: Do not upcast ViewStub to View (KT-10321) 2016-04-19 18:47:51 +03:00
Yan Zhulanow
6e14c11280 Android Extensions: handle layout file rename 2016-04-19 18:47:51 +03:00
Yan Zhulanow
47b3394f62 Android Extensions: regenerate properties when layout is renamed/deleted/added (KT-11944) 2016-04-19 18:47:51 +03:00
Yan Zhulanow
9e33b7d3bc Android Extensions: support identifiers with packages (KT-10841) 2016-04-19 18:47:51 +03:00
Alexander Udalov
0494e1d258 Minor, add KtDoubleColonExpression#isEmptyLHS utility 2016-04-19 18:37:21 +03:00
Alexander Udalov
fa31994442 J2K KtQualifiedExpression and subclasses: convert
Also merge KtQualifiedExpressionImpl into KtQualifiedExpression and remove
calls from subclasses
2016-04-19 18:37:20 +03:00
Alexander Udalov
093c2f63d4 J2K KtQualifiedExpression and subclasses: rename .java -> .kt 2016-04-19 18:37:19 +03:00
Alexander Udalov
9c99152126 Do not consider error results successful in '::' LHS resolution
Fixes EA-81649
2016-04-19 18:37:02 +03:00
Alexander Udalov
be62caf335 Extract '::' type-checking code to DoubleColonExpressionResolver 2016-04-19 18:28:25 +03:00
Alexander Udalov
4706d4eaea Minor, restructure parsing test case for '::' 2016-04-19 18:28:24 +03:00
Valentin Kipyatkov
3dc32fb5db Minor change on code review 2016-04-19 15:22:06 +03:00
Valentin Kipyatkov
bade304bf3 Better presentation 2016-04-19 15:22:06 +03:00
Valentin Kipyatkov
022075995b KT-11957 No "catch" and "finally" keywords in completion
#KT-11957 Fixed
2016-04-19 15:22:06 +03:00
Valentin Kipyatkov
c7a96401da Refactoring 2016-04-19 15:22:06 +03:00
Valentin Kipyatkov
2a3b87f783 KT-11784 Completion for 'if' statement should add parentheses automatically
#KT-11784 Fixed
2016-04-19 15:22:06 +03:00
Valentin Kipyatkov
bf4a376831 Use CommentSaver instead of manual comment handling 2016-04-19 15:22:05 +03:00
Valentin Kipyatkov
e72e6bf7db KT-11870 "Replace with Elvis" refactoring doesn't change the variable type from T? to T
#KT-11870 Fixed
2016-04-19 15:22:05 +03:00
Valentin Kipyatkov
6bdf3622ed KT-11890 Completion for callable references does not propose static Java members
#KT-11890 Fixed
2016-04-19 15:22:05 +03:00
Valentin Kipyatkov
f3bb3e9c6e KT-11912 String interpolation is not converted to ${} form when accessing this.property
#KT-11912 Fixed
2016-04-19 15:22:05 +03:00
Dmitry Petrov
e441f0509f KT-11943 Do not use intrinsic 'java' property if receiver type is not acceptable 2016-04-19 10:31:30 +03:00
Valentin Kipyatkov
120bced842 Fixing build 2016-04-18 23:05:59 +03:00
Alexey Tsvetkov
23c21396f7 Make Kotlin2JsGradlePluginIT test compatible with gradle 2.x 2016-04-18 22:12:08 +03:00
Alexey Tsvetkov
51104a5c2b Make gradle daemon thread leak test more thorough
Former test made the following assertion:
for any of 3 sequent builds on the same gradle daemon
the difference in used memory between build start and finish
should not exceed 2500 kb.

Current test makes the following assertion:
the difference of used memory after first and last
of 10 sequent builds on the same daemon should not exceed 200 kb.
2016-04-18 21:31:41 +03:00
Alexey Tsvetkov
d446e60e70 Remove ThreadTracker from gradle plugin
ThreadTracker was introduced to detect memory leaks
when using gradle daemon. However, it makes
quite strong assumption about build lifecycle:
there should not be any builds started after
kotlin plugin is configured that are alive when
buildFinished callback is called.

This assumption can be broken by some gradle configurations
namely our android tests and gradle 2.13-rc.

Since we already have daemon memory leak test (KotlinGradlePluginIT#testKotlinOnlyDaemonMemory),
after some discussion it was decided to remove ThreadTracker
2016-04-18 21:31:41 +03:00
Alexander Udalov
2df8e56b94 Do not store project in JPS tests after they're executed
This saves a couple dozen megabytes currently
2016-04-18 17:26:59 +03:00
Alexander Udalov
e941ba761a Minor, fix case in test data file name 2016-04-18 17:26:58 +03:00
Valentin Kipyatkov
bd5af61879 Moved ShortenReferences from idea-analysis to idea-core, added dependency from idea-analysis to idea-core 2016-04-18 17:15:52 +03:00
Valentin Kipyatkov
da4dee3716 Moved generateUtil.kt into idea-core 2016-04-18 17:15:52 +03:00
Valentin Kipyatkov
b32859cf68 KT-11633 Kotlin code editor applies wrong indentation after completing a statement in data class
#KT-11633 Fixed
2016-04-18 17:15:52 +03:00
Ilya Chernikov
6b3a691367 Fix KT-10507 - "missing extension point" with parallel compilation 2016-04-18 15:16:48 +02:00
Mikhail Glukhikh
3f266647f0 Does not replace explicit lambda parameter with 'it' if conflicting nested literal available #KT-11849 Fixed 2016-04-18 15:26:42 +03:00
Nikolay Krasko
2e1a2fa8d1 Fallback to default source provider for non-gradle projects 2016-04-18 14:06:45 +03:00
Mikhail Glukhikh
c7b2042b77 Do not suggest to add variance modifier if both in and out are possible 2016-04-18 13:40:55 +03:00
Mikhail Glukhikh
e60930d5ce Add variance modifier fix corrected: primary constructor parameters are taken into account 2016-04-18 13:40:50 +03:00
Alexander Udalov
027cc898e7 Minor, fix warnings in core/ modules 2016-04-17 13:35:17 +03:00
Mikhail Zarechenskiy
f773966458 Create artifact with 'formatter' module output to share it with Eclipse plugin 2016-04-15 18:15:13 +03:00
Mikhail Zarechenskiy
37e0b71584 Split KotlinBlock on two clases to share independent logic about
formatting  between Idea and Eclipse

 Also make 'formatter' module depend on fewer dependencies
2016-04-15 18:15:13 +03:00
Mikhail Zarechenskiy
4c006300ef Move files related to formatting to module 'formatter' as is 2016-04-15 18:15:13 +03:00
Mikhail Zarechenskiy
a7c397fe84 Create 'formatter' module
Purpose of this module is to extract common code  about formatting and reuse it in Eclipse
2016-04-15 18:15:13 +03:00
Mikhail Zarechenskiy
ac1ca890fd J2K KotlinBlock: convert and prettify
Also get rid of ContainerUtil
2016-04-15 18:15:13 +03:00
Mikhail Zarechenskiy
22289cf337 J2K KotlinBlock: rename 2016-04-15 18:15:13 +03:00
Natalia Ukhorskaya
e8f46f5315 Debugger: 'Step Over' unexpectedly resume if condition of 'while' loop contains inline function call
#KT-11932 Fixed
2016-04-15 18:11:36 +03:00
Natalia Ukhorskaya
f0badb05ea Debugger: fix step over for inline argument with non-local return 2016-04-15 18:11:36 +03:00
Natalia Ukhorskaya
f0cfd450e5 Debugger: fix step over inside inline function (do not step into function literal argument) 2016-04-15 18:11:36 +03:00
Alexey Andreev
8ad339836d KT-11875 Moves code that uncovers the following JS function:
```
function foo (closureParam, closureParam2, ...) {
    return function() {
        // function body
    }
}
```

from FunctionContext to FunctionInlineMutator. The old code causes bug when calling this function like this: `foo(this, ...)`, since first `closureParam` is replaced with `this`. Later, FunctionInlineMutator can't make difference between original `this` inside *function body* and former `closureParam` reference that became `this` after replacement. So, let FunctionInlineMutator replace `this` in *function body* and then substitute closure parameters.

KT-11875 Fixed
2016-04-15 17:35:30 +03:00
Natalia Ukhorskaya
8129901d82 Minor: clarify exception messages during Evaluate Expression 2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
316057873b Fix EA-72969 - assert: ExtractFunctionForDebuggerUtilKt$getFunctionForExtractedFragment$.invoke : ERROR_TYPES
Context element for codeFragment can be a KtFile (not  only KtExpression) ex. in case when file was changed after debugger starts and there is no expression at line with breakpoint
2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
7fb3099206 Fix EA-80854 - IOOBE: KotlinLineBreakpointType.getLambdaByOrdinal.
This could happen when breakpoint in lambda was set but than the code changed and there is no lambdas at this line anymore
2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
a929df6fa1 Debugger, minor: do not throw NPE when receiverTypes are null in completion 2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
d42823d4ee Debugger: cannot evaluate expression with raw types
#KT-11831 Fixed
2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
070ee10872 Debugger: do not insert ambiguous imports inside codeFragments
#KT-11927 Fixed
2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
d7a87b2ff0 Debugger: fix breakpoints inside generic crossinline argument body
#KT-11848 Fixed
2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
7a5ab93f9e Debugger: write line number for catch clause declaration 2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
8e3ec5b7f0 Debugger: fix breakpoints inside inline functions in libraries sources 2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
3ef51159b8 Debugger: remove unnecessary whitespaces in presentation of line breakpoint variants 2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
e55a1ad49c Get correct target platform for codeFragments 2016-04-15 15:58:07 +03:00
Natalia Ukhorskaya
0d4fa46cfa Debugger: correct scope for runtime type calculation 2016-04-15 15:58:07 +03:00
Mikhail Glukhikh
e806341cdc Increase visibility: make not available in case of potential exposed visibility problems (see KT-11920) 2016-04-15 15:20:35 +03:00
Mikhail Glukhikh
6acd4bc21d Refactoring: ExposedVisibilityChecker extracted from DeclarationsChecker 2016-04-15 15:20:30 +03:00
Mikhail Glukhikh
ed4ccc6a19 Minor refactoring: EffectiveVisibility 2016-04-15 15:20:26 +03:00
Mikhail Glukhikh
80e41c5298 KT-11806: increase visibility quick fix: private / internal -> public #KT-11806 Fixed 2016-04-15 15:20:21 +03:00
Mikhail Glukhikh
f12a9b7b95 KT-11806: increase visibility quick fix, private --> internal, also for members 2016-04-15 15:20:16 +03:00
Mikhail Glukhikh
2098bed86d Quick fix renamed: ChangePrivateTopLevelToInternal --> IncreaseVisibility 2016-04-15 15:20:12 +03:00
Alexander Udalov
a94ebcdeb4 Update ChangeLog for 1.0.2 2016-04-15 11:54:23 +03:00
Alexander Udalov
07c229e94b Exclude InlineOnly from kotlin-test
It's already present in kotlin-stdlib and that causes
com.android.dex.DexException

 #KT-11505 Fixed
2016-04-15 11:33:23 +03:00
Nikolay Krasko
fab05620b4 Reference test common and place plugins after idea libs 2016-04-15 00:36:54 +03:00
Alexander Udalov
48664a2ba7 Refactor AbstractBinaryClassAnnotationAndConstantLoader#findClassWithAnnotationsAndInitializers
Extract all special cases to getSpecialCaseContainerClass
2016-04-14 21:08:36 +03:00
Alexander Udalov
d571512f47 Remove unnecessary fields in DeserializedClassDescriptor 2016-04-14 21:08:36 +03:00
Alexander Udalov
e0dd60c57a Expand code for boolean fields in Flags
Push flag index computation logic from FlagField down to subclasses
(BooleanFlagField and EnumLiteFlagField) because in the case of
BooleanFlagField it's trivial
2016-04-14 21:08:36 +03:00
Alexander Udalov
1f3850da6e Store outer class in ProtoContainer instead of only its kind 2016-04-14 21:08:36 +03:00
Alexander Udalov
8ee278d02f Fix SourceElement for classes loaded in decompiler 2016-04-14 21:08:36 +03:00
Alexander Udalov
88106bb13b Get rid of BinarySource interface, use SourceElement instead 2016-04-14 21:08:36 +03:00
Alexander Udalov
ad068ed4ac Do not call findKotlinClass when loading class annotations
The main change is in AbstractBinaryClassAnnotationAndConstantLoader, where we
no longer perform unnecessary IO operations for classes which are already
loaded to memory
2016-04-14 21:08:36 +03:00
Alexander Udalov
7620d66019 Minor, rename PackagePartSource -> BinarySource 2016-04-14 21:08:36 +03:00
Alexander Udalov
ac92be12c6 Minor, take ProtoContainer in AnnotationAndConstantLoader#loadClassAnnotations 2016-04-14 21:08:36 +03:00
Alexander Udalov
2ab68d53fa J2K KotlinJvmBinaryClass & AnnotationAndConstantLoader: convert 2016-04-14 21:08:36 +03:00
Alexander Udalov
9c7e4f3dcc J2K KotlinJvmBinaryClass & AnnotationAndConstantLoader: rename .java -> .kt 2016-04-14 21:08:36 +03:00
Alexander Udalov
c091bb990b Make LazyJavaPackageFragment#javaScope private 2016-04-14 21:08:36 +03:00
Alexander Udalov
a34aaa5955 Move package part-related code from LazyJavaPackageScope to LazyJavaPackageFragment 2016-04-14 21:08:36 +03:00
Alexander Udalov
e516b695ae Minor, do not store FqName in LazyJavaClassDescriptor 2016-04-14 21:08:36 +03:00
Alexander Udalov
836a62d4b3 Minor, move resolveKotlinBinaryClass closer to single usage 2016-04-14 21:08:36 +03:00
Ilya Gorbunov
a2db8f9090 Performance: move the state out of multifile class parts to avoid synchronization. 2016-04-14 19:03:39 +03:00
Yan Zhulanow
8304c85f4f Lint: support both IJ 15 and Android Studio 2.0 (different Android plugins)
Dirty hack :(
2016-04-14 17:20:23 +03:00
Natalia Ukhorskaya
b782d2cd11 J2K: do not invoke visitChildrenRecursively in Action.update
#KT-11160 Fixed
2016-04-14 17:05:14 +03:00
Natalia Ukhorskaya
495be06fc5 J2K: do not generate super call to abstract property 2016-04-14 17:04:50 +03:00
Natalia Ukhorskaya
72019a1b4e J2K: Insert !! for expression only if NotNull expected (not for Default nullability) 2016-04-14 17:04:32 +03:00
Natalia Ukhorskaya
98c3b39f7e J2K: Get nullability from variable initializer when converting call
#KT-11534 In Progress
2016-04-14 17:04:20 +03:00
Natalia Ukhorskaya
f3a3c0886f J2K: Remove unnecessary casts of non-nullable expression to nullable type after conversion
#KT-11543 Fixed
2016-04-14 17:04:14 +03:00
Natalia Ukhorskaya
c864b67550 Add regression test: parameter from lambda is removed 2016-04-14 17:03:44 +03:00
Natalia Ukhorskaya
29f385a713 J2K, minor: fix testData 2016-04-14 17:03:42 +03:00
Natalia Ukhorskaya
1108fbfbeb J2K: convert scratch files correctly
#KT-10604 Fixed
2016-04-14 17:03:35 +03:00
Nikolay Krasko
5396a68e71 Enable tests in generators module 2016-04-14 14:40:30 +03:00
Denis Zharkov
2f0b052540 Fix infinite loop in CanBeValInspection
Obviously there should be 'return' instead of 'continue'
Otherwise the loop will not end

 #KT-11891 Fixed
2016-04-14 14:01:39 +03:00
Dmitry Petrov
583733be8d KT-11645 properly handle private property getter name mangling in reflection 2016-04-14 09:31:29 +03:00
Dmitry Petrov
511a7e0072 KT-11645 generate backing field for 'private const val' in part implementation class 2016-04-14 09:31:29 +03:00
Yan Zhulanow
76e5657a99 Minor: add Javadoc for UastContext/UastLanguagePlugin 2016-04-13 18:05:51 +03:00
Dmitry Petrov
82946437d8 EA-81358: use volatile store / volatile load to guarantee publication of deferred clinit results 2016-04-13 16:19:10 +03:00
Kirill Rakhman
9495257de3 Add QuickFix to add 'crossinline' to parameter (#852)
Fixes #KT-10844
2016-04-13 13:25:35 +02:00
Kirill Rakhman
56fd2d28b8 Let Implement Quickfix: Launch "Implement Members" dialog after applying #KT-11836 Fixed 2016-04-13 12:50:45 +03:00
Alexey Sedunov
9bf395a4cd Light Classes: Skip irrelevant overloads when looking for light parameter
#KT-11868 Fixed
2016-04-13 12:20:20 +03:00
Nikolay Krasko
c6b6e9f18b Note about EAP-repository configuration added to changelo 2016-04-13 12:39:12 +04:00
Nikolay Krasko
46eed6fa4d Configuration for EAP versions 2016-04-13 08:15:01 +03:00
Nikolay Krasko
c5ef562f54 Add eap version to maven versions combobox if working with eap plugin 2016-04-13 00:14:54 +03:00
Nikolay Krasko
441fb7ff28 Use correct version detection for developer versions
#KT-11213 Fixed
2016-04-13 00:14:52 +03:00
Alexander Udalov
aff1226e47 Update ChangeLog with issues fixed since 1.0.2-eap-15 2016-04-12 21:22:00 +03:00
Alexander Udalov
59d73e716c Fix memory leak in StdlibTest 2016-04-12 20:03:51 +03:00
Alexander Udalov
11d875ca17 Fix deadlock in StaticScopeForKotlinEnum
Also fix possible deadlock in ReflectionTypes

 #KT-11869 Fixed
2016-04-12 20:03:51 +03:00
Alexander Udalov
a8629b3836 Do not fail on unknown -X flags
For better compatibility if we add experimental stuff in 1.0.X compilers
2016-04-12 20:03:51 +03:00
Alexander Udalov
37d612d346 Update cli-parser 1.1.1 -> 1.1.2 2016-04-12 20:03:51 +03:00
Alexander Udalov
114713995f Cleanup CandidateResolver 2016-04-12 20:03:51 +03:00
Alexander Udalov
76d3246514 Fix type of member references without explicit class on LHS
Type of '::foo' for a function foo in a class A should be KFunction0<Unit>, not
KFunction1<A, Unit>. Continue to report an error in this case, to be maybe
supported in the future
2016-04-12 20:03:51 +03:00
Alexander Udalov
d8263eb0b8 Assert that callable references cannot have expression on LHS 2016-04-12 20:03:51 +03:00
Nikolay Krasko
92f3795a11 New idea works with relative paths in configureByFiles() 2016-04-12 18:30:42 +03:00
Nikolay Krasko
8a227baf00 Add dependency to uast-kotlin 2016-04-12 18:19:08 +03:00
Michael Bogdanov
be999ca4cb Write proper start label for parameters of inline function default implementation 2016-04-12 15:31:49 +03:00
Michael Bogdanov
c52c0e2c2d Write proper start label for inlined constructor parameters (start label was shifted by additional captured parameters injection) 2016-04-12 15:23:14 +03:00
Nikolay Krasko
0cf1c8d900 Workaround for building against jars from both JDK 6 and JDK 8 on TeamCity 2016-04-12 14:53:20 +03:00
Nikolay Krasko
598f48a8cf Add tests for checking dependant modules for compiler-tests 2016-04-12 14:53:18 +03:00
Nikolay Krasko
354db68f21 Remove dependency on compiler-tests from uast-kotlin 2016-04-12 14:53:17 +03:00
Nikolay Krasko
7c6b7994ad Remove jdk 8 compiler tests from non-compiler-tests 2016-04-12 14:53:16 +03:00
Stanislav Erokhin
3b41fcb5ba Refactoring. Add type safety to resolution. 2016-04-12 03:22:45 +03:00
Zalim Bashorov
51c6abdbed IC: take into account added and removed classes when calculate affected names 2016-04-11 19:26:18 +03:00
Mikhail Glukhikh
1b2deb8a8a Message corrected for warning "some modifier is redundant because another is present" 2016-04-11 16:32:50 +03:00
Mikhail Glukhikh
d79e3f322f Redundant modality modifier inspection #KT-11450 Fixed 2016-04-11 16:32:43 +03:00
Mikhail Glukhikh
8a0641a639 Warning about override / open redundancy is no more reported 2016-04-11 16:32:36 +03:00
Mikhail Glukhikh
1d83a1a97c Can be parameter inspection #KT-10819 Fixed 2016-04-11 16:32:26 +03:00
Alexander Udalov
8ace253559 Minor, remove paragraph symbols from comments
This character seems to cause problems on some build agents
2016-04-11 16:11:25 +03:00
Nikolay Krasko
233635e0d8 Enable injecting predefined and custom Java places in Kotlin 2016-04-11 15:04:04 +03:00
Mikhail Glukhikh
fff4aa8f12 Minor: cleanup of RemoveValVarFromParameterFix 2016-04-11 12:28:09 +03:00
Dmitry Petrov
1f3323ed32 KT-11750 Do not report REDECLARATION on descriptors which are not available in sources. 2016-04-11 09:13:07 +03:00
Alexey Sedunov
905ca21799 Spring Support: Support @Transactional annotation in "Make annotated declaration open" inspection 2016-04-09 21:13:34 +03:00
Alexey Sedunov
119cf0f0cd Spring Support: Support Find Usages/Rename (on both declarations and
references) of Kotlin declarations referenced in the XML config
 #KT-11719 Fixed
 #KT-11652 Fixed
2016-04-09 21:13:30 +03:00
Alexey Sedunov
a553f67744 Minor: Extract SpringTestFixtureExtension.loadConfigByMainFilePath() function 2016-04-09 21:13:25 +03:00
Alexey Sedunov
afecb09b6f Spring Support: Fix renaming of Spring bean declarations via SpEL references
#KT-11720 Fixed
 #KT-11725 Fixed
2016-04-09 21:13:21 +03:00
Alexey Sedunov
5203f62655 Minor: Remove /*rename*/ marker in Rename tests 2016-04-09 21:13:16 +03:00
Alexey Sedunov
b8905645ae Light Classes: Navigate to KtFile from light class containing file
#KT-11689 Fixed
2016-04-09 21:13:11 +03:00
Alexey Sedunov
eeac739f69 Spring Support: Fixed computation of values in Java annotations referred by Kotlin annotation entries
#KT-11702 Fixed
2016-04-09 21:13:07 +03:00
Alexey Sedunov
a818d4714e Misc: Extract kotlin-ultimate project 2016-04-09 21:13:01 +03:00
Alexey Sedunov
1a4a7406fe Misc: Extract properties "dependencies" and "generators" from update_dependencies.xml 2016-04-08 21:12:38 +03:00
Alexey Sedunov
843e2bc135 Spring Support: "Generate @Autowired Dependency..." action
#KT-11408 Fixed
2016-04-08 21:11:30 +03:00
Alexey Sedunov
233f2b468d Spring Support: "Generate Dependency..." actions
#KT-11407 Fixed
2016-04-08 21:11:28 +03:00
Alexey Sedunov
4ed1c3d448 Minor: Generify KtClassOrObject.addDeclarationXXX() 2016-04-08 21:11:25 +03:00
Alexey Sedunov
81298e57f2 [RESTORED] Misc: Fetch Spring libraries to dependencies directory 2016-04-08 21:11:24 +03:00
Alexey Sedunov
9aeca98b82 [RESTORED] Spring Support: Inspection for Spring configuration 2016-04-08 21:11:22 +03:00
Alexey Sedunov
236654aa7e [RESTORED] Spring Support: SpEL injections
#KT-11406 Fixed
2016-04-08 21:11:20 +03:00
Alexey Sedunov
a89dbfcfd4 [RESTORED] Spring Support: Show Spring line markers for Kotlin classes
#KT-3741 Fixed
2016-04-08 21:11:19 +03:00
Alexey Sedunov
962b312fb7 [RESTORED] Light Classes: Constant expression evaluator for light annotation arguments 2016-04-08 21:11:16 +03:00
Alexey Sedunov
f2e2220560 [RESTORED] Spring Support: Implement Spring-specific references 2016-04-08 21:11:15 +03:00
Alexey Sedunov
196b484cd7 [RESTORED] Spring Support: Inspection for final Spring-annotated classes/functions
#KT-11098 Fixed
2016-04-08 21:11:14 +03:00
Alexey Sedunov
e4a64e7980 [RESTORED] Spring Support: Test framework 2016-04-08 21:09:28 +03:00
Alexey Sedunov
b5ac464305 [RESTORED] Misc: Configure dependency on Spring support and related plugins: J2EE, JSP, persistence, database tools, CSS 2016-04-08 21:07:24 +03:00
Alexey Sedunov
a30b4140de [RESTORED] Misc: Configure IDEA Ultimate dependencies 2016-04-08 21:07:23 +03:00
Nikolay Krasko
10206ef0d0 Restore tests-common dependency in idea module 2016-04-08 18:36:34 +03:00
Nikolay Krasko
8ccb442009 Do not guard downloading artifacts for compiler tests with dependencies.properties 2016-04-08 17:40:38 +03:00
Nikolay Krasko
47c7181f2a Extract tests-common module without any actual tests
The main reasoning for the module is to avoid running any compiler tests while executing run configuration that searches tests across module dependencies.
2016-04-08 17:40:38 +03:00
Yan Zhulanow
c45bdef0c2 Minor: Add idea -> lint_idea dependency (fixes IDEA tests), change lint sdk to 1.8 2016-04-08 16:27:50 +03:00
Yan Zhulanow
29412693db Uast: add "strict" parameter to getParentOfType() 2016-04-08 15:39:58 +03:00
Yan Zhulanow
c13c24becc Uast, Lint: Update and fix tests 2016-04-08 15:39:58 +03:00
Yan Zhulanow
21a2115501 Uast: Add Uast visitor extensions instead of additional checkers 2016-04-08 15:39:58 +03:00
Yan Zhulanow
6b30b8ce1f Other code review changes 2016-04-08 15:39:58 +03:00
Yan Zhulanow
991e783ccf Lint: Make lint run normally on both older and newer versions of IDEA (IdeaAndroidProject was replaced by AndroidGradleModel) 2016-04-08 15:39:58 +03:00
Yan Zhulanow
726bfca540 Change semantics of getObjectKeyword() function 2016-04-08 15:39:58 +03:00
Yan Zhulanow
41979de71e Uast: Rewrite visitor 2016-04-08 15:39:58 +03:00
Yan Zhulanow
04e8161f1d Code review changes 2016-04-08 15:39:58 +03:00
Yan Zhulanow
7ed5b6c10b Minor: rename NoTraverse to LeafUElement 2016-04-08 15:39:58 +03:00
Yan Zhulanow
c1e59e4957 Code review changes 2016-04-08 15:39:58 +03:00
Yan Zhulanow
7007261d7b Rename UastHandler to UastCallback 2016-04-08 15:39:58 +03:00
Yan Zhulanow
3484f92d10 Uast: Update tests, make the tests a bit more readable (provide toString() methods for Uast kinds) 2016-04-08 15:39:58 +03:00
Yan Zhulanow
109c76c87d Minor: remove @author comments 2016-04-08 15:39:58 +03:00
Yan Zhulanow
0f01303f0c Lint: Add Kotlin Lint tests 2016-04-08 15:39:58 +03:00
Yan Zhulanow
65da1edb56 Download full copy of the Android SDK (needed to run the all Android Lint tests) 2016-04-08 15:39:58 +03:00
Yan Zhulanow
984f10ddff Lint: fix some more detectors 2016-04-08 15:39:58 +03:00
Yan Zhulanow
aa4f2e426b Lint: Remove lint suppress quickfix (does not work currently with Kotlin) 2016-04-08 15:39:58 +03:00
Yan Zhulanow
5be2b90c6d Uast, Minor: Group binary operators 2016-04-08 15:39:58 +03:00
Yan Zhulanow
cdd98592e4 Uast, Minor: UAnnotated is now always an UElement 2016-04-08 15:39:58 +03:00
Yan Zhulanow
2c003d16f2 Uast: support 'override' modifier in Java and Kotlin 2016-04-08 15:39:58 +03:00
Yan Zhulanow
da5e6c4092 Kotlin Uast, Minor: support PsiElementBacked in KotlinUType 2016-04-08 15:39:58 +03:00
Yan Zhulanow
1ac6c0f2e9 Kotlin Uast: support class literal expressions.
Ability to get type of class of class literal expressions.
2016-04-08 15:39:58 +03:00
Yan Zhulanow
6172f23d9b Uast: support new elements in UastVisitor 2016-04-08 15:39:58 +03:00
Yan Zhulanow
5cf5024d08 Lint: fix Lint additional checkers with the custom handlers 2016-04-08 15:39:58 +03:00
Yan Zhulanow
37a4d78347 Lint: resolve via the accessor descriptor in PropertyAsCAllAndroidUastAdditionalChecker 2016-04-08 15:39:58 +03:00
Yan Zhulanow
3dc091d92c Uast: support internal class names in Java and method signatures in Java and Kotlin 2016-04-08 15:39:58 +03:00
Yan Zhulanow
5bc31112c1 Lint: Remove IntellijApiDetector 2016-04-08 15:39:58 +03:00
Yan Zhulanow
3258ebae39 Java Uast: Support try-with-resources 2016-04-08 15:39:58 +03:00
Yan Zhulanow
9d34df2475 Java Uast: Support static imports 2016-04-08 15:39:58 +03:00
Yan Zhulanow
06a88f417c Uast: support beforeVisit() and afterVisit() in visitor 2016-04-08 15:39:58 +03:00
Yan Zhulanow
3a7f29bfc5 Lint: Support visitResourceReference() in Uast 2016-04-08 15:39:58 +03:00
Yan Zhulanow
514e3859da Uast: Rename JavaPsiElemenStub -> JavaDumbUElement, KotlinPsiElementStub -> KotlinDumbUElement.
Use it everywhere in `nameElement`
2016-04-08 15:39:58 +03:00
Yan Zhulanow
6c40fda7b7 Support equals() on UElements (comparation by psi) 2016-04-08 15:39:58 +03:00
Yan Zhulanow
985c8660b7 Uast Java, Kotlin: Support all binary operators in Uast 2016-04-08 15:39:58 +03:00
Yan Zhulanow
3f6796f0c2 Uast: Support all basic Java types needed for Lint 2016-04-08 15:39:58 +03:00
Yan Zhulanow
862f824bcc Kotlin Uast: Support object literals 2016-04-08 15:39:58 +03:00
Yan Zhulanow
78ce025ca3 Uast: Ability to get the default class type from UClass 2016-04-08 15:39:58 +03:00
Yan Zhulanow
5c07e6de9d Kotlin Uast, Refactoring: Extract toSource() function 2016-04-08 15:39:58 +03:00
Yan Zhulanow
ed1e1c6a2b Uast, Minor: make lateinit mutable propertiy setters internal 2016-04-08 15:39:58 +03:00
Yan Zhulanow
18e963422b Lint: Remove diagnostics unrelated to uast.
All these diagnostics are already present in the Android plugin, so there's no need in them here.
2016-04-08 15:39:58 +03:00
Yan Zhulanow
ed10829091 Uast: Allow to search for a static members (in Kotlin static members are located inside the companion objects).
Companion objects support.
2016-04-08 15:39:58 +03:00
Yan Zhulanow
f1e5c85ba3 Uast: Support Kotlin anonymous initializers 2016-04-08 15:39:58 +03:00
Yan Zhulanow
335712141d Java Uast, Minor: Convert Java Uast properties with backing field to properties with getter (optimization) 2016-04-08 15:39:58 +03:00
Yan Zhulanow
f130dc96f7 Lint: Implement Kotlin Java synthetic property calls as Java method calls via the additional checker 2016-04-08 15:39:58 +03:00
Yan Zhulanow
d1939d52bc Replace UastConverter with UastLanguagePlugin, allow additional checkers 2016-04-08 15:39:58 +03:00
Yan Zhulanow
4ef6016ee8 Lint: Rename all Lint inspections to KLint to provide unique short names 2016-04-08 15:39:58 +03:00
Yan Zhulanow
f4422b3b19 Kotlin Uast: Support type parameters on functions 2016-04-08 15:39:58 +03:00
Yan Zhulanow
668172d68e Lint, Minor: Group lint-related modules 2016-04-08 15:39:58 +03:00
Yan Zhulanow
4df9e9261e Lint: Rewrite Lint diagnostics using Uast. 2016-04-08 15:39:58 +03:00
Yan Zhulanow
126cc778e4 Lint: copy diagnostics from IDEA (br143) 2016-04-08 15:39:58 +03:00
Yan Zhulanow
92d2e7a0a9 Kotlin Uast: Initial implementation 2016-04-08 15:39:58 +03:00
Yan Zhulanow
a13a1e1e4a Java Uast: Initial implementation 2016-04-08 15:39:58 +03:00
Yan Zhulanow
16de31aebe Uast: Unified AST (Kotlin, Java) interfaces set.
Goal: support Android Lint diagnostics in Kotlin by switching Lint scanners from the Java Lombok AST to the abstract AST (uast) with Java and Kotlin PsiElement-backed implementations.
2016-04-08 15:39:58 +03:00
Dmitry Petrov
aca7050656 KT-11499 Normalize stacks on return from an inline function when the function is inlined at call site. 2016-04-08 14:52:55 +03:00
Michael Bogdanov
a6044c81ff Write proper start label for loop parameter 2016-04-08 14:32:51 +03:00
Zalim Bashorov
441a442f34 Minor: update testdata 2016-04-08 13:45:37 +03:00
Zalim Bashorov
f5ca949f2c IC: improve logging in tests and fix DataContainerVersionChangedTestGenerated#testWithError
Test logging improvements:
  * print which chunk building in the round for multimodule projects
  * print actions after cache changed
2016-04-08 13:45:37 +03:00
Kirill Rakhman
da5c963a43 Fix let implement quickfix label for object expressions
Fixes #KT-11782
2016-04-08 10:37:25 +03:00
Valentin Kipyatkov
cdab9d5103 KT-11710 "Replace 'if' with elvis operator": incorrect code generated for 'if' expression
#KT-11710 Fixed
2016-04-07 18:50:32 +03:00
Valentin Kipyatkov
6a65442095 KT-11811 There is no intention "Make protected" for a val declared in parameters of constructor
#KT-11811 Fixed
2016-04-07 18:50:32 +03:00
Valentin Kipyatkov
a9fe999e0e Fixed StackOverflow in CanBeValInspection.kt 2016-04-07 18:50:31 +03:00
Valentin Kipyatkov
22a4bbe1aa KT-11805 Invert if-condition intention breaks code in case of end of line comment
#KT-11805 Fixed
2016-04-07 18:50:30 +03:00
Valentin Kipyatkov
b258af5288 KT-11724 False suggestion to replace with compound assignment
#KT-11724 Fixed
2016-04-07 18:50:30 +03:00
Alexander Udalov
7c90fbe4de Compute return type for property getters more safely
Do not call `isError()` on property's type right after creation of
PropertyGetterDescriptor because the property has no getter yet (it's created
but not yet stored to the property, that happens a bit later), and `isError()`
leads to computation of the delegate type, which for delegated properties
performs some complex resolution (see `VariableTypeResolver#process`) which
relies on the fact that the property already has a getter.

Since the purpose of the original change (883e2e4d) was to support a quick fix
which would add the type to a property in an expression like "val x get() =
...", check the type (or initializer) presence in the PSI instead, this is
safer and is still suitable for the quick fix.

Also fix arguments to "wrong getter type" diagnostic: previously something
useless like "expected Int, actual Int" was reported

 #KT-11809 Fixed
2016-04-07 15:35:58 +03:00
Dmitry Petrov
f1b061d662 Optimize coercion to Unit.
POP operations are backward-propagated.

Operation can't be transformed if its result is moved within stack
(by DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, or SWAP).

Unnecessary operations are replaced with NOPs (for debugger).
Unnecessary NOPs are removed.

KT-9922 Suboptimal generation for simple safe call with unused return value
KT-11116 Optimize methods returning Unit
2016-04-07 11:40:58 +03:00
Alexander Udalov
c4a568efff Minor, add test cases for obsolete protected-related issues 2016-04-07 00:07:11 +03:00
Alexander Udalov
9eec5daf51 Minor, fix a few typos in NameResolution.adoc 2016-04-06 23:21:13 +03:00
Nikolay Krasko
9e88db7e58 Fix bad test modification 2016-04-06 21:46:02 +03:00
Nikolay Krasko
46a1028494 Temporary ad-hock jps-tests enable with testdata modification 2016-04-06 21:46:00 +03:00
Alexey Andreev
9fd19dd7fd KT-7819 Add test to ensure that lambda capturing this literal can be inlined 2016-04-06 16:16:56 +03:00
Alexey Andreev
05887f45f7 KT-7819 Implement non-local returns 2016-04-06 16:16:55 +03:00
Alexey Andreev
a6e1bd1d89 KT-7819 Borrow tests for non-local returns from JVM backend 2016-04-06 16:16:55 +03:00
Pavel V. Talanov
f7db1f934c IDELightClassGenerationSupport#getContextForClassOrObject: do not rely on resolution facade being unchanged
ResolutionFacade should only recompute its underlying structures in case of psi change (which is ok) or some exception, but relying on it being unchanged has led to numerous exceptions in backend when building light classes (EA-70985, EA-80756)
Changing this code may not be the solution but it can possibly move failures to other parts of the system, where they can be easier diagnosed
2016-04-06 16:09:17 +03:00
Nikolay Krasko
74091a12cf Update since to IDEA 2016.1 2016-04-06 14:20:55 +03:00
Nikolay Krasko
4b22685dc5 Change asm library path 2016-04-06 14:20:53 +03:00
Nikolay Krasko
f648fddb84 Create repository for openapi.jar and idea_rt.jar on teamcity to avoid full idea download 2016-04-06 14:20:51 +03:00
Stanislav Erokhin
187c0d4dd0 Refactoring. Change Key for TAIL_RECURSION_CALL from ResolvedCall to Call. 2016-04-06 13:55:36 +03:00
Stanislav Erokhin
516d4df834 Refactoring. Remove isSafeCall from ResolvedCall. 2016-04-06 13:55:35 +03:00
Stanislav Erokhin
bf08341ee4 Refactoring. Change type of ResolvedCall#extensionReceiver from Receiver to ReceiverValue 2016-04-06 13:55:35 +03:00
Stanislav Erokhin
63a2d8a416 Refactoring. Remove receiverArgument from ResolutionCandidate. 2016-04-06 13:55:34 +03:00
Valentin Kipyatkov
602de317d6 Minor improvement in convert to string template inspection: no highlighting when the expression is split onto multiple lines 2016-04-06 10:45:28 +03:00
Mikhail Glukhikh
c32881e41b Fix: test renamed 2016-04-06 10:39:50 +03:00
Dmitry Petrov
8377eb4613 KT-11777: no parts for '<root>' 2016-04-06 10:01:01 +03:00
Nikolay Krasko
d8a2cab708 Bad merge in AbstactIntentionTest that made tests useless 2016-04-05 22:12:31 +03:00
Dmitry Jemerov
01b0cfb552 don't parse lines starting with @ as KDoc tags if they're inside a Markdown code fence
#KT-11789 Fixed
2016-04-05 19:48:51 +02:00
Stanislav Erokhin
ad002c4f09 Minor. Fix file name & regenerate tests. 2016-04-05 20:45:27 +03:00
Kirill Rakhman
a895a3e3de ConvertToForEachFunctionCallIntention: convert 'continue' to 'return@forEach'
Fixed #KT-11764
2016-04-05 18:48:02 +02:00
Valentin Kipyatkov
d5182ffe16 Minor change on code review 2016-04-05 19:33:08 +03:00
Valentin Kipyatkov
e7fa0bec9a Ctrl-Q and other PsiElement-based features to work for synthetic java properties
#KT-11676 Fixed
2016-04-05 19:33:07 +03:00
Valentin Kipyatkov
2aba11abb8 Added test for generic operator 2016-04-05 19:33:07 +03:00
Valentin Kipyatkov
3aff4d4c17 Smart completion to use super type for override if no explicit type specified 2016-04-05 19:33:06 +03:00
Valentin Kipyatkov
7af67da4ac Better smart completion after "by" for override property with no explicit type specified 2016-04-05 19:33:06 +03:00
Valentin Kipyatkov
f85de3aac7 Added better way to construct FuzzyType 2016-04-05 19:33:05 +03:00
Valentin Kipyatkov
e18fb20d5a Completion after "by" for top-level properties 2016-04-05 19:33:05 +03:00
Valentin Kipyatkov
fe9d6aca9a More correct test data 2016-04-05 19:33:04 +03:00
Valentin Kipyatkov
24764ed865 Checking for conflicting substitutors in completion after "by" 2016-04-05 19:33:04 +03:00
Valentin Kipyatkov
e05d6a7056 Smart completion after "by" works for getValue/setValue in generic class 2016-04-05 19:33:03 +03:00
Valentin Kipyatkov
4dde458e84 Smart completion after "by" works for generic properties too 2016-04-05 19:33:02 +03:00
Valentin Kipyatkov
20ac76fe3a Member functions of enum should not be in smart completion 2016-04-05 19:33:02 +03:00
Valentin Kipyatkov
9c6fed1622 Enabled old test 2016-04-05 19:33:01 +03:00
Valentin Kipyatkov
3e09a6902a Renamed test 2016-04-05 19:33:01 +03:00
Valentin Kipyatkov
7b4f26d1b5 Minor changes on code review 2016-04-05 19:33:00 +03:00
Valentin Kipyatkov
9ebf94b4cf KT-11609 No named arguments completion should be after dot
#KT-11609 Fixed
2016-04-05 19:32:59 +03:00
Valentin Kipyatkov
471b673bdd Dropped HeuristicSignatures because there are supported by the language already 2016-04-05 19:32:59 +03:00
Valentin Kipyatkov
88bdf88bbb "Delegates" members in smart completion after "by"
#KT-6231 Fixed
2016-04-05 19:32:58 +03:00
Valentin Kipyatkov
ae0d840aab "Static members" completion after "by" 2016-04-05 19:32:58 +03:00
Valentin Kipyatkov
6fa230311c Show substituted type arguments for type instantiation items 2016-04-05 19:32:57 +03:00
Valentin Kipyatkov
074c6c8dcd Minor 2016-04-05 19:32:57 +03:00
Valentin Kipyatkov
0edc5c15e2 Complete type instantiation items after "by" 2016-04-05 19:32:56 +03:00
Valentin Kipyatkov
ba6accd5f9 Correct substitutions for smart completion after "by" and "in" 2016-04-05 19:32:55 +03:00
Valentin Kipyatkov
7d3229538e One more test 2016-04-05 19:32:55 +03:00
Valentin Kipyatkov
e8c35e16e0 Smart completion after "by" and "in": non-imported operators supported 2016-04-05 19:32:54 +03:00
Valentin Kipyatkov
cda539d769 Initial implementation of smart completion after "by"
#KT-11787 Fixed
2016-04-05 19:32:37 +03:00
Valentin Kipyatkov
c2065c1856 "contains" now requires to be marked as operator + no heuristic signature for contains needed anymore 2016-04-05 18:44:06 +03:00
Mikhail Glukhikh
1b9c6e0ea2 Add variance (in / out) modifier inspection #KT-11090 Fixed 2016-04-05 17:47:29 +03:00
Mikhail Glukhikh
7c02a1eaad Refactoring: VarianceChecker / VarianceCheckerCore, check variance for a separate class 2016-04-05 17:47:20 +03:00
Mikhail Glukhikh
78a898651b Code cleanup: VarianceChecker 2016-04-05 17:45:51 +03:00
Mikhail Glukhikh
c1cbd26eb9 Minor refactoring: let implement interface 2016-04-05 17:45:47 +03:00
Pavel V. Talanov
8fe14b7ba5 KT-11765 Analyze code in anonymous initializer of inteface
#KT-11765 Fixed
2016-04-05 15:04:07 +03:00
Alexey Andreev
40dc5f24d5 Generalize pattern that matches JS module declaration to accept unicode characters
(cherry picked from commit eb44819)
2016-04-05 14:40:27 +03:00
Alexey Andreev
20c0f62d8b Speed-up looking up modules in JS files. This reduces the time needed for JS backend tests to pass
(cherry picked from commit 951ec82)
2016-04-05 14:40:27 +03:00
Alexey Andreev
b3698b1177 Rename JsAstUtils.fqn to fqnWithoutSideEffects. Move PropertyTranslator to appropriate package 2016-04-05 14:40:26 +03:00
Alexey Andreev
0caff1e504 Refactor JS optimizer to use RecursiveJsVisitor where possible and introduce more self-descriptive names in TemporaryAssignmentElimination. Add TODOs and comments for code pieces with non-obvious meaning. 2016-04-05 14:40:26 +03:00
Alexey Andreev
4d126096a1 Invert MetadataProperties.withoutSideEffects to sideEffects 2016-04-05 14:40:26 +03:00
Alexey Andreev
b053c54933 Add more hints about property access that is provable has no side effect. Refactor namer 2016-04-05 14:40:25 +03:00
Alexey Andreev
4a53f5c0b8 Don't relocate temporary variable which receives property access, unless it's provable that this property don't have side effects 2016-04-05 14:40:25 +03:00
Alexey Andreev
cfdce8eaca Rewrite temporary variable elimination 2016-04-05 14:40:25 +03:00
Alexey Andreev
8709289b0a Prohibit from eliminating non-local temporary variables 2016-04-05 14:40:24 +03:00
Alexey Andreev
af7ddb4572 Adds test infrastructure for JS optimizer. Adds simple tests 2016-04-05 14:40:24 +03:00
Alexey Andreev
a7fcbb614d Some cleanup in JS optimizer 2016-04-05 14:40:24 +03:00
Alexey Andreev
3571201e9c Prevent JS optimizer from inserting duplicate variable declarations 2016-04-05 14:40:23 +03:00
Alexey Andreev
4d7906fe44 Prevent temporary variable from substituting to branches of ternary conditional expression, since it can sometimes violate evaluation order 2016-04-05 14:40:23 +03:00
Alexey Andreev
e6e3275906 Implement reduction of if statement to ternary conditional expression 2016-04-05 14:40:23 +03:00
Alexey Andreev
33baa1d774 Implement dead code elimination in JS AST. Repeat optimizations until it's not possible to optimize anything 2016-04-05 14:40:22 +03:00
Alexey Andreev
b5ab8f8488 Make JS optimizations respect nested functions 2016-04-05 14:40:22 +03:00
Alexey Andreev
3ceea68859 Remove optimizations performed during JS inlining. Implement several optimizations as a separate pass 2016-04-05 14:40:22 +03:00
Natalia Ukhorskaya
3301f1f614 Configure Kotlin: do not show notification when apply directive contains double quotes 2016-04-05 14:12:01 +03:00
Natalia Ukhorskaya
e2f464ccc6 Configure kotlin: fix NPE for Idea 145 of higher
#KT-11772 Fixed
2016-04-05 14:12:01 +03:00
Michael Bogdanov
dec53c8d6c Fix for KT-11762: "VerifyError: Bad local variable type" caused by explicit loop variable type
#KT-11762 Fixed
2016-04-05 13:37:10 +03:00
Zalim Bashorov
f2237f675d Don't use invalid entries (including disposed libraries) when crete module infos to avoid exceptions in the future (see #EA-81326) 2016-04-05 12:44:46 +03:00
Zalim Bashorov
88da3fe44d Check that library isn't already disposed before use to avoid exceptions like in #EA-79154 2016-04-05 12:44:46 +03:00
Zalim Bashorov
7dad1831e9 Generate stubs only for files from jar
#EA-78399 fixed
2016-04-05 12:44:46 +03:00
Dmitry Petrov
fe7f7ceed5 Do not generate postponed initialization method for part class as synchronized. 2016-04-05 11:44:36 +03:00
Kirill Rakhman
f9bef68e10 Fix handling of nullable types in LetImplementInterfaceFix #KT-11404 2016-04-05 09:49:02 +03:00
Nikolay Krasko
3056e0b54c Make java8 tests depend on Java 8 JDK 2016-04-05 00:42:09 +03:00
Nikolay Krasko
9c43ff281c Remove stopping JobSchedule executor. It now fails on shutdown attempt. 2016-04-05 00:42:08 +03:00
Nikolay Krasko
554b7d9618 Reset application to null after test in KotlinTestWithEnvironment 2016-04-05 00:42:06 +03:00
Nikolay Krasko
7dcf8ae570 Refactoring: replace custom function to FileUtil.delete 2016-04-05 00:42:05 +03:00
Nikolay Krasko
4104d8632d Fix AS API change 2016-04-05 00:41:28 +03:00
Nikolay Krasko
9cd8c2b7bd Fix compilation against new version of Android plugin 2016-04-05 00:39:46 +03:00
Nikolay Krasko
66bef7c740 Introduce compound run configuration with all compiler tests 2016-04-05 00:39:46 +03:00
Nikolay Krasko
9afd9db5c9 Rename "All compiler tests" to "Compiler tests" as it now doesn't include js tests 2016-04-05 00:39:46 +03:00
Nikolay Krasko
fdf7a3325d Clean up copied code. Remove comments and unused code. 2016-04-05 00:39:46 +03:00
Nikolay Krasko
9fd5568425 Uncomment and move AntTaskJsTest test to js module 2016-04-05 00:39:46 +03:00
Nikolay Krasko
4f7257ab66 Remove dependency to idea.jar in compiler tets to continue running them with JDK 1.6 2016-04-05 00:39:46 +03:00
Nikolay Krasko
a642a15947 "Run Test" line markers now wrap the function names. Additional marker on abstract class. 2016-04-05 00:39:46 +03:00
Nikolay Krasko
ee9962ed70 Template for Junit4 framework doesn't have test prefix anymore 2016-04-05 00:39:46 +03:00
Nikolay Krasko
ed6aaa1138 Remove temp directories in tests
There's new algo for temp file creation that starting to fail after ~1000 files have been created.
2016-04-05 00:39:46 +03:00
Nikolay Krasko
835c8f2c10 Build compiler-tests with 1.6 jdk 2016-04-05 00:39:46 +03:00
Nikolay Krasko
5a88b19b24 Update to idea 2016.1 2016-04-05 00:39:46 +03:00
Nikolay Krasko
6291bb92bd Create own disposable for building separated modules
There's a new check that assert disposer hasn't be disposed yet.
2016-04-05 00:39:46 +03:00
Nikolay Krasko
04cea0993c Make idea-analysis depend on Java 8 2016-04-05 00:39:46 +03:00
Nikolay Krasko
aa2fe9576b Build jps-plugin with java 1.6 2016-04-05 00:39:46 +03:00
Nikolay Krasko
4c81cc802b Remove duplicate build-common dependency 2016-04-05 00:39:46 +03:00
Nikolay Krasko
5a3712f737 Add read action to definition searcher 2016-04-05 00:39:46 +03:00
Nikolay Krasko
00d06fccb6 Fix tests by using relative paths
LightTempDirTestFixtureImpl.findOrCreateChildDir can work only with relative paths
2016-04-05 00:39:46 +03:00
Nikolay Krasko
2081d8f458 Fixes after LightPlatformCodeInsightTestCase stopped execution test under write action by default
See 1d1025401ffb7a06b3340069e06dad14a2e73ddd in intellij-community
1d1025401f
2016-04-05 00:39:46 +03:00
Nikolay Krasko
8325c1a2df Setup proguard rules for new xstream library 2016-04-05 00:39:46 +03:00
Nikolay Krasko
900cc58f01 xstream-1.4.3.jar -> xstream-1.4.8.jar in idea 2016-04-05 00:39:46 +03:00
Nikolay Krasko
f80aaa97a6 Extract plugins tests to separate module with JDK 1.8 2016-04-05 00:39:46 +03:00
Nikolay Krasko
46b5305666 Extract jps-tests to separate module
Remove dependency to idea-full to build jps-plugin with Java 1.6
2016-04-05 00:39:46 +03:00
Nikolay Krasko
fca9a84db8 Set compile target to 1.8 2016-04-05 00:39:46 +03:00
Nikolay Krasko
c576f9272e Remove explicit target 2016-04-05 00:39:46 +03:00
Nikolay Krasko
ef13e8f5bb Prepare building plugins modules against 1.8 JDK 2016-04-05 00:39:46 +03:00
Nikolay Krasko
24a54e2933 Write action for AbstractKotlinExceptionFilterTest 2016-04-05 00:39:46 +03:00
Nikolay Krasko
37b6849d31 Update test data in debugger tests 2016-04-05 00:39:46 +03:00
Nikolay Krasko
4dffacfd1b Fix evaluation tests - create views in gui thread 2016-04-05 00:39:46 +03:00
Nikolay Krasko
139964bf31 Fix repl tests: do modification in write action, avoid hang in closed console 2016-04-05 00:39:46 +03:00
Nikolay Krasko
ae05c04d98 Update maven test: shutdown maven process 2016-04-05 00:39:46 +03:00
Nikolay Krasko
f4fa567409 Can't change file for checkResultByFile by simple assignment to myFile anymore 2016-04-05 00:39:46 +03:00
Nikolay Krasko
a71d1c24ff Mass test data update: find usages doesn't contain column anymore 2016-04-05 00:39:46 +03:00
Nikolay Krasko
b6f3bf9869 Update undroid test clean up 2016-04-05 00:39:46 +03:00
Nikolay Krasko
31484784bb Suppress warnings from PsiClassUtil for findModulesWithClass method 2016-04-05 00:39:46 +03:00
Nikolay Krasko
aa6def5b86 Suppress warnings from SVGLoader 2016-04-05 00:39:46 +03:00
Nikolay Krasko
31da7662c5 Set-up usage for kotlin-test lib 2016-04-05 00:39:46 +03:00
Nikolay Krasko
84af26d342 Fix compile error in KotlinExcludeFromCompletionLookupActionProvider 2016-04-05 00:39:46 +03:00
Nikolay Krasko
0d9e586628 Fix compile errors in AbstractKotlinEvaluateExpressionTest.kt 2016-04-05 00:39:46 +03:00
Nikolay Krasko
02fb9a4063 Update to idea16 EAP (145.184.1) 2016-04-05 00:39:46 +03:00
Stanislav Erokhin
693461e2ee Minor. Remove failed tests for KT-8116. 2016-04-04 23:12:38 +03:00
Stanislav Erokhin
40d3d2c592 Minor. Mute testdata. 2016-04-04 23:12:38 +03:00
Stanislav Erokhin
1c05308c05 Minor. Fix testdata. 2016-04-04 23:12:37 +03:00
Alexander Udalov
c1bcc76dda ChangeLog: add some missing issues fixed in 1.0.1 2016-04-04 21:42:45 +03:00
Alexander Udalov
0e3d2fb38e ChangeLog for 1.0.2 2016-04-04 21:39:34 +03:00
Pavel V. Talanov
3f62b6c495 Typecheck call arguments if callee is resolved to variable
#KT-11579 Fixed
2016-04-04 21:13:22 +03:00
Pavel V. Talanov
e46d713bba KtLightClassForFacade is no longer valid if some of the files have changed their name
#KT-11580 Fixed
2016-04-04 21:10:04 +03:00
Stanislav Erokhin
832f468b13 KT-11733 Cannot infer type parameter in SAM with nullability annotations
#KT-11733 Fixed
2016-04-04 15:31:30 +03:00
Natalia Ukhorskaya
c6fe1b715d Minor: fix test on java 6 2016-04-04 15:27:14 +03:00
Natalia Ukhorskaya
3a0caed148 Avoid 1s delay in completion in debugger fields if session is not stopped on a breakpoint 2016-04-04 15:27:14 +03:00
Nikolay Krasko
473a05b456 Fix too frequent check for compiler modification 2016-04-04 15:25:49 +03:00
Mikhail Glukhikh
b55610b1f0 KT-11404 (let type implement interface): indirect inheritance with generics fixed 2016-04-04 14:17:56 +03:00
Mikhail Glukhikh
640ae60a6b KT-11404: additional test to cover indirect inheritance 2016-04-04 13:58:45 +03:00
Kirill Rakhman
1e6f507f5e Implement quick-fix "let type implement interface" #KT-11404 Fixed 2016-04-04 13:46:47 +03:00
Kirill Rakhman
2198a8c8d0 cleanup KtClassOrObject and KtClass 2016-04-04 13:45:30 +03:00
Mikhail Glukhikh
214e1d3015 Simplify comparison fix introduced #KT-10509 Fixed 2016-04-04 13:41:48 +03:00
hedgehog
02d4376b85 #KT-10797 Fixed 2016-04-04 12:21:11 +02:00
Dmitry Jemerov
62212e7da9 Merge pull request #845 from yarulan/KT-11675
Fix #KT-11675 Fixed - Add Smart Enter processor for 'init'
2016-04-04 12:09:41 +02:00
Natalia Ukhorskaya
de60e6d5b7 Minor: count lambdaOrdinal in tests from 1 instead of 0 2016-04-04 12:30:46 +03:00
Natalia Ukhorskaya
09faec9ed7 Debugger: Smart Step Into inside lambda suggests methods from outer context
#KT-10148 Fixed
2016-04-04 12:30:46 +03:00
Natalia Ukhorskaya
8b6a447e68 Do not highlight completion variants from nullable receiver with grey in Evaluate Expression Dialog
#KT-11578 Fixed
2016-04-04 12:30:46 +03:00
Natalia Ukhorskaya
4d8673d097 Smart step into skips methods from subclasses
#KT-11705 Fixed
2016-04-04 12:30:46 +03:00
Natalia Ukhorskaya
c91026f0c0 Configure Kotlin action fails for Idea 145 or higher
#KT-11593 Fixed
2016-04-04 12:30:46 +03:00
Natalia Ukhorskaya
cba7c85c36 Minor: rearrange test data 2016-04-04 12:30:46 +03:00
Natalia Ukhorskaya
102edd5a0e Debugger: do not insert array in imports 2016-04-04 12:30:46 +03:00
Natalia Ukhorskaya
2ce9783214 Debugger: remove useless casts from expressions converted from java 2016-04-04 12:30:46 +03:00
Natalia Ukhorskaya
a93db70995 Debugger: Convert java expression to kotlin when open EE dialog from Variables View
#KT-6805 Fixed
2016-04-04 12:30:46 +03:00
Michael Bogdanov
e0adfd453f Fix for KT-11677: Generic type signatures for local classes in inlined lambdas are not written properly
#KT-11677 Fixed
2016-04-04 12:07:47 +03:00
Michael Bogdanov
f5166b7aef Support test directives in inline tests 2016-04-04 12:07:46 +03:00
Michael Bogdanov
d319811101 Added test for obsolete KT-11631: Couldn't inline method call
#KT-11631 Obsolete
2016-04-03 14:18:13 +03:00
Ilya Gorbunov
f3f1aa8a15 Change String.subSequence parameter names to match those of CharSequence.subSequence. 2016-04-01 21:39:09 +03:00
Sergey Mashkov
c64b59ed82 KT-11261 Implement MavenArchetypesProvider extension point 2016-04-01 18:24:14 +03:00
Alexander Udalov
f2ddc83f86 Reorder and prettify existing ChangeLog entries for 1.0.2 2016-04-01 17:46:18 +03:00
Alexander Udalov
f149e2ca6e Configure Kotlin in project: list only modules with Kotlin files
This was initially done in d07d34af but reverted in 8f2dd2c8, possibly due to
incorrect rebase

 #KT-10831 Fixed
2016-04-01 14:08:32 +03:00
Svetlana Isakova
860a2741d9 Minor 2016-04-01 11:41:53 +03:00
Svetlana Isakova
f1ccf6b133 Restructuring in "invoke" description 2016-04-01 11:39:59 +03:00
Dmitry Petrov
1d87595dc9 binary compat validator: update testData for changes related to new facade generation 2016-04-01 10:13:22 +03:00
Dmitry Petrov
92ddbb271a KT-11410: generate light classes from multifile class parts in binaries
if explicitly requested by fqName
2016-04-01 10:13:22 +03:00
Dmitry Petrov
4c4141ea49 KT-11410: write multifile class code generation scheme to extra field (xi) in kotlin.Metadata. 2016-04-01 10:13:22 +03:00
Dmitry Petrov
d30ab50532 KT-11410: Build stdlib with new part/facade inheritance scheme. 2016-04-01 10:13:22 +03:00
Dmitry Petrov
db58ebc4b2 KT-11410: Class hierarchy for parts/facade of multi-file class.
Preserve static initialization semantics for parts by introducing a special "clinit trigger" class.
Insert "static initialization trigger" call to every method of a part class, remove this call on inline.
Always mangle names for private functions in multifile class parts to avoid resolution clashes on inheritance.

NB in codegen tests initializers for all non-const vals are wrapped in 'run { ... }',
so that the initializer is not a constant expression, and some static initialization code should be generated.
2016-04-01 10:13:22 +03:00
Dmitry Petrov
0ccaf43e2c KT-11410: Add Xmultifile-parts-inherit CLI option. 2016-04-01 10:13:21 +03:00
Dmitry Petrov
095cbea125 KOTLIN_CONFIGURATION_FLAGS directive for passing compiler configuration parameters to tests.
So far, only boolean flags are supported.
2016-04-01 10:13:21 +03:00
Sergey Mashkov
cb4702c406 KT-11261 Implement MavenArchetypesProvider extension point 2016-03-31 23:04:51 +02:00
Sergey Mashkov
14ca0f4aac KT-2917 maven archetype for kotlin projects 2016-03-31 23:04:50 +02:00
Ilya Gorbunov
f35dc47b4e Optimize snapshot operations to return special collection implementations when result is empty or has single element.
#KT-9990 Fixed
2016-03-31 21:30:59 +03:00
Alexey Tsvetkov
0a5db2fea4 Load kotlin.incremental from local.properties file too 2016-03-31 19:40:51 +03:00
Pavel V. Talanov
781bc13941 ExceptionTracker: do not increment counter on ReenteringLazyValueComputationException
ReenteringLazyValueComputationException is in fact correct behaviour which does not indicate a problem we should try to recover from
This led to an obscure bug when resolve sessions were invalidated multiple times during light class construction (see KT-11635)
 #KT-11635 Fixed
2016-03-31 19:33:05 +03:00
Pavel V. Talanov
d7dc122298 KT-11721 Wrong "Typechecker has run into recursive problem" on calling kotlin get function as synthetic property
#KT-11721 Fixed
2016-03-31 19:33:04 +03:00
Ilya Gorbunov
d5d19f5595 Make Map.plus accept Map out-projected by key type as either operand (receiver or parameter).
#KT-11301 Fixed
2016-03-31 17:20:58 +03:00
Ilya Gorbunov
0332217b70 Remove implementations of intrinsic array creation functions (arrayOf, primitiveArrayOf)
#KT-11485 Fixed
2016-03-31 17:15:10 +03:00
Ilya Gorbunov
9caa17dc74 Minor: Make internal monitorEnter/monitorExit functions private to remove them from the public API
#KT-11485
2016-03-31 17:15:10 +03:00
Nikolay Krasko
bbd6417d3c Add plugin-api dependency of android-extension-compiler to plugin classpath
Add it to kotlin-plugin.jar but not to kotlin-android-extensions-plugin.jar because frontend depends on the module plugin-api too.
2016-03-31 16:07:22 +03:00
Nikolay Krasko
c0481ca598 Move injection to optional dependency 2016-03-31 16:07:22 +03:00
Pavel V. Talanov
7de171efda Improve message clarity for WRONG_NUMBER_OF_TYPE_ARGUMENTS diagnostics
#KT-9887 Fixed
2016-03-31 16:06:48 +03:00
Alexey Tsvetkov
d6cd46e079 Build non-incrementally when input class-file is changed 2016-03-31 15:08:14 +03:00
Denis Zharkov
1511a03027 Fix SAM adapters substitution
Approximate sourceFunction types if it's needed

 #KT-11696 Fixed
2016-03-31 14:52:12 +03:00
Denis Zharkov
bc1b34a989 Add additional visibility check for synthetic extensions
Use extension receiver as dispatch one, because it is effectively dispatch
(after some desugaring)
2016-03-31 14:51:57 +03:00
Denis Zharkov
b5c9523e4b Minor. Adjust JS test to protected visibility changes 2016-03-31 14:51:57 +03:00
Denis Zharkov
1bc45fb9cf Adjust J2K to latest protected visibility fixes 2016-03-31 14:51:57 +03:00
Denis Zharkov
92be4aee9c Prohibit protected constructor calls that are not super-calls in subtypes
#KT-11649 Fixed
2016-03-31 14:51:57 +03:00
Denis Zharkov
816f14a927 Minor. Covariantly override ClassDescriptor.original 2016-03-31 14:51:57 +03:00
Denis Zharkov
5056c43975 Do not check receiver for protected constructor calls
Checks for protected constructors should be performed manually,
because they are rather complex
2016-03-31 14:51:57 +03:00
Denis Zharkov
5bf336474d Respect receiver-dependent visibility when selecting smart-cast type 2016-03-31 14:51:57 +03:00
Denis Zharkov
d3b7eb81fa Make PositioningStrategy.mark public
Because it's used with receivers of types different from call site ones.
2016-03-31 14:51:57 +03:00
Denis Zharkov
935355ad2f Refine isVisible for protected visibility
#KT-7437 Fixed
 #KT-7971 Fixed
 #KT-7051 Fixed
 #KT-6125 Fixed
 #KT-6186 Fixed
2016-03-31 14:51:57 +03:00
Denis Zharkov
182b349492 Clarify Visibility.isVisible contract for null as receiverValue
See comment
2016-03-31 14:51:57 +03:00
Mikhail Glukhikh
60511f010a Build fix: evaluationErrors.repl 2016-03-31 14:34:56 +03:00
Svetlana Isakova
4c30bcfca0 Added separate notes for name resolution motivation
Addressed some comments on the main article
2016-03-31 13:23:55 +03:00
Mikhail Glukhikh
56ef98ee29 Refactoring: DeclarationsChecker checkClassOrObjectMembers / checkFunction 2016-03-31 12:19:15 +03:00
Mikhail Glukhikh
8c131f4790 KT-11666: Implicit nothing is allowed for overridden function / properties 2016-03-31 12:00:22 +03:00
Mikhail Glukhikh
4c03aaabd4 Implicit nothing / intersection types are now checked also for member functions #KT-11666 Fixed 2016-03-31 11:59:17 +03:00
Yaroslav Ulanovych
242a44e477 Fix #KT-11675 Fixed - Add Smart Enter processor for 'init' 2016-03-30 23:25:47 +03:00
Alexander Udalov
0ea3b4ade4 Fix multiple resource leaks by closing InputStream instances
The main fix is in BuiltInsPackageFragment, the rest is the improvement of
other usages of getResourceAsStream

 #KT-11433 Fixed
2016-03-30 21:41:43 +03:00
Alexander Udalov
8316953259 Fix double quotes in diagnostic messages
For diagnostics without any parameters, the given text is simply rendered as a
String, so no symbols should be escaped.

For diagnostics with parameters, the format in java.text.MessageFormat is used,
so one single quote is erased and two single quotes become one single quote in
the rendered text.
2016-03-30 21:41:43 +03:00
Pavel V. Talanov
484167e9d9 KtLightModifierList* is created only for light classes build for sources
This is a hacky solution to avoid calling lightMemberOrigin.originalElement inside
Moreover it needs to resolve descriptor for sources inside computeAnnotations and it is used only for kotlin sources so this will have to do for now
2016-03-30 21:35:24 +03:00
Pavel V. Talanov
e19cc04c63 KT-11678 Support navigation from Java source to Kotlin binaries
Introduce LightMemberOriginForCompiledElement which holds logic for finding corresponding decompiled declaration
ByJvmSignatureIndexer stores the required information while building decompiled text

Some are unsolved in this commit:
   - constructors
   - @Jvm* and other unregular generated members
   - annotation methods

 #KT-11678 Fixed
2016-03-30 21:35:23 +03:00
Pavel V. Talanov
f9fa365059 LightElements: avoid computation of LightMemberOrigin.originalElement on common api calls 2016-03-30 21:35:23 +03:00
Pavel V. Talanov
f40a04c5a2 Refactor light elements
KtLightElement#delegate -> clsDelegate, KtLightElement#origin -> kotlinOrigin and make them properties
KtLightClassForDecompiledDeclaration stores KtClsFile
KtLightField stores LightMemberOrigin
2016-03-30 21:35:22 +03:00
Pavel V. Talanov
02543295f9 Refactor: Make LightMemberOrigin an interface, extract one implementation 2016-03-30 21:35:21 +03:00
Pavel V. Talanov
3977508c2c Improve AbstractReferenceResolveTest 2016-03-30 21:35:20 +03:00
Pavel V. Talanov
4824d4b880 Refactor: abstract over decompiled text indexing
Move navigation-related code from KtDecompiledFile
2016-03-30 21:35:19 +03:00
Pavel V. Talanov
ef25b14eab Drop non-generated NavigateToDecompiledLibraryTest
It relies on internal data structure
2016-03-30 21:35:19 +03:00
Pavel V. Talanov
68c0bb9dc2 Generate navigateToDecompiledLibraryTest from the same test data as navigateToLibrarySourceTest
Change test data format
2016-03-30 21:35:18 +03:00
Pavel V. Talanov
f74e8ee7f8 Generate tests for resolving references to kotlin binaries from java in IDE 2016-03-30 21:35:17 +03:00
Ilya Gorbunov
ab68b49a70 Introduce RandomAccess to JS.
Make EmptyList support RandomAccess.
#KT-10794
2016-03-30 21:06:18 +03:00
Ilya Gorbunov
6ba98f7fe6 Binary compatibility validator: filter out empty facades *after* members are flattened from non-public part superclasses.
Use stable member sort order for members flattened from non-public superclasses, rewrite test to make order matter.
2016-03-30 20:44:44 +03:00
Svetlana Isakova
8e7f259beb Added an article describing name resolution 2016-03-30 19:34:54 +03:00
Mikhail Glukhikh
b7e8f71367 Fix of getCorrespondingLoop for complex loop / try-finally trees #KT-8246 Fixed 2016-03-30 18:49:23 +03:00
Alexander Udalov
f385c85672 Rename Changelog.md -> ChangeLog.md 2016-03-30 18:29:17 +03:00
Nikolay Krasko
193f5e9720 Find problem test in injection 2016-03-30 16:42:37 +03:00
Nikolay Krasko
b4f5f0e10e Add initial support for injecting languages with comment or annotation
#KT-11472 Fixed
2016-03-30 16:42:37 +03:00
Nikolay Krasko
4819c07c95 Extract function for adding annotation to KtModifierListOwner 2016-03-30 16:42:37 +03:00
Valentin Kipyatkov
97311b56fe Minor changes on code review 2016-03-30 15:58:09 +03:00
Valentin Kipyatkov
99c232df84 Checking that no quickfix reference KotlinType 2016-03-30 15:58:09 +03:00
Valentin Kipyatkov
2ac627efd3 No KotlinType reference in ConvertClassToKClassFix 2016-03-30 15:58:09 +03:00
Valentin Kipyatkov
40e69318b8 Renames + parameter to receiver 2016-03-30 15:58:08 +03:00
Valentin Kipyatkov
1f39511950 No i18n 2016-03-30 15:58:08 +03:00
Valentin Kipyatkov
9e5bbc5ef4 No KotlinType reference in ChangeParameterTypeFix 2016-03-30 15:58:08 +03:00
Valentin Kipyatkov
d8993069c0 Do not rely on KotlinType.toString() 2016-03-30 15:58:08 +03:00
Valentin Kipyatkov
1754b58e37 No KotlinType reference in AddArrayOfTypeFix 2016-03-30 15:58:08 +03:00
Valentin Kipyatkov
3905344530 No KotlinType reference in NumberConversionFix 2016-03-30 15:58:07 +03:00
Valentin Kipyatkov
3ad292697a No KotlinType reference in ChangeFunctionLiteralReturnTypeFix 2016-03-30 15:58:07 +03:00
Valentin Kipyatkov
9bbeaa3c03 Minor code improvements 2016-03-30 15:58:07 +03:00
Valentin Kipyatkov
74f9f89728 Converting to Kotlin (step 2) 2016-03-30 15:58:07 +03:00
Valentin Kipyatkov
f18db1f88e Converting to Kotlin (step 1) 2016-03-30 15:58:07 +03:00
Valentin Kipyatkov
e00e94e8c6 No KotlinType reference in CastExpressionFix 2016-03-30 15:58:06 +03:00
Valentin Kipyatkov
3467ac7438 No KotlinType reference in ChangeFunctionReturnTypeFix 2016-03-30 15:58:06 +03:00
Valentin Kipyatkov
41c09700e8 Minor code improvements 2016-03-30 15:58:06 +03:00
Valentin Kipyatkov
e0ba2e8395 Converting to Kotlin (step 2) 2016-03-30 15:58:06 +03:00
Valentin Kipyatkov
6afd88bf07 Converting to Kotlin (step 1) 2016-03-30 15:58:06 +03:00
Valentin Kipyatkov
54a69bf21d ChangeVariableTypeFix to not hold KotlinType 2016-03-30 15:58:05 +03:00
Valentin Kipyatkov
d5a8d8c393 Functions to objects 2016-03-30 15:58:05 +03:00
Valentin Kipyatkov
3f022377f3 Minor code improvements 2016-03-30 15:58:05 +03:00
Valentin Kipyatkov
eb918db3af Converting to Kotlin (step 2) 2016-03-30 15:58:05 +03:00
Valentin Kipyatkov
9c18409966 Converting to Kotlin (step 1) 2016-03-30 15:58:05 +03:00
Valentin Kipyatkov
1f0679e103 Converting to Kotlin (step 2) 2016-03-30 15:58:04 +03:00
Valentin Kipyatkov
2ffde5db43 Converting to Kotlin (step 1) 2016-03-30 15:58:04 +03:00
Valentin Kipyatkov
210626a6e1 Merged code into one visitor 2016-03-30 15:58:04 +03:00
Valentin Kipyatkov
f4e3e33bd3 Renamed class 2016-03-30 15:58:04 +03:00
Valentin Kipyatkov
93e170325e KT-11612 Highlight named arguments in the editor somehow
#KT-11612 Fixed
2016-03-30 15:58:04 +03:00
Valentin Kipyatkov
b9865c7225 Minor 2016-03-30 15:58:04 +03:00
Valentin Kipyatkov
2625c6bc29 Converted to Kotlin 2016-03-30 15:58:03 +03:00
Alexander Udalov
ae263dd70c Add KClass.equals/hashCode to public API of Kotlin runtime
See be4b432
2016-03-30 15:01:07 +03:00
Alexey Tsvetkov
71135b9528 Minor: rename property AbstractKotlinCompile.experimentalIncremental->incremental 2016-03-30 04:42:30 +03:00
Alexey Tsvetkov
61814eb23f Test: override build.log in gradle IC tests 2016-03-30 03:40:53 +03:00
Alexey Tsvetkov
c1a61b17c7 Test: use one function to find test's build log for jps and gradle 2016-03-30 03:40:53 +03:00
Alexey Tsvetkov
3d8ec118cb Remove class files when building non-incrementally 2016-03-30 03:40:53 +03:00
Alexey Tsvetkov
c8b7764576 Add gradle IC version file 2016-03-30 03:40:53 +03:00
Alexey Tsvetkov
ede900ca87 Use separate cache directory for each kotlin gradle task 2016-03-30 03:40:53 +03:00
Alexey Tsvetkov
4c782dbfcc Refactor: move allVersions() to jps-plugin since it is jps specific 2016-03-30 03:40:53 +03:00
Alexey Tsvetkov
5d2d827772 Test: change log dump format in gradle tests so it could be parsed again 2016-03-30 03:40:53 +03:00
Alexey Tsvetkov
b050722249 Test: add android incremental compilation test project 2016-03-30 03:40:52 +03:00
Alexey Tsvetkov
bafa9dca48 Test: pass android-build-tools version using project property
The reason is to test the same project with different android-build-tools versions
2016-03-30 03:40:52 +03:00
Alexey Tsvetkov
157c5009f0 Test: download android sdk using sdk-manager-plugin 2016-03-30 03:40:52 +03:00
Alexey Tsvetkov
c686c7fb91 Minor: print subprocess output immediately in tests 2016-03-30 03:40:52 +03:00
Alexey Tsvetkov
da3897536a Minor: format android gradle test 2016-03-30 03:40:52 +03:00
Alexey Tsvetkov
5d89f1fb0a Minor: remove assertion from test
Asserted task does not exist
2016-03-30 03:40:52 +03:00
Alexey Tsvetkov
ae53183d72 Fix java build when kotlin is changed
See SimpleKotlinGradleIT#testSimpleCompile

    #KT-11350 fixed
2016-03-30 03:40:52 +03:00
Alexey Tsvetkov
4e64d46105 Add kotlin.incremental project property to gradle
Allows turning on incremental compilation by passing
'-Pkotlin.incremental=true' in command line
or specifying it in a 'local.properties' file
2016-03-30 03:40:51 +03:00
Alexey Tsvetkov
274b7bb0b0 Test: turn off thread leaks assertion for android gradle tests
ThreadTracker compares active threads before and after compilation.
In test mode if those sets are different, it was throwing an exception.
By some reason that is not obviously linked with kotlin,
the exception was thrown for every android test.

As a temporary solution I added a property 'kotlin.gradle.test.assertThreadLeaks'
that controls this assertion and turned it off for android tests only.
2016-03-30 03:39:44 +03:00
Ilya Gorbunov
cbf8dca28d Add deprecated extension MutableList.remove.
#KT-11648 Fixed
2016-03-29 19:56:03 +03:00
Alexey Sedunov
90487e9aa1 Misc: Replace Ultimate SDK with Community during dependency update 2016-03-29 19:26:27 +03:00
Alexey Sedunov
3603d873cd [REVERTED] 8e7e3a3 Alexey Sedunov on 3/10/2016 at 16:58 (committed on 3/24/2016 at 18:42)
Misc: Configure IDEA Ultimate dependencies
2016-03-29 19:17:12 +03:00
Alexey Sedunov
1e50cc5d00 [REVERTED] d8a033e Alexey Sedunov on 3/11/2016 at 15:56 (committed on 3/24/2016 at 18:42)
Misc: Configure dependency on Spring support and related plugins: J2EE, JSP, persistence, database tools, CSS
2016-03-29 19:17:11 +03:00
Alexey Sedunov
9070aa882d [REVERTED] 161d11d Alexey Sedunov on 3/18/2016 at 14:00 (committed on 3/24/2016 at 18:42)
Spring Support: Test framework
2016-03-29 19:17:10 +03:00
Alexey Sedunov
e11e27ff55 [REVERTED] 72a17b0 Alexey Sedunov on 2/21/2016 at 00:01 (committed on 3/24/2016 at 18:42)
Spring Support: Inspection for final Spring-annotated classes/functions
2016-03-29 19:17:09 +03:00
Alexey Sedunov
ed9b1ac151 [REVERTED] 0a71eb7 Alexey Sedunov on 2/25/2016 at 14:02 (committed on 3/24/2016 at 18:42)
Spring Support: Implement Spring-specific references
2016-03-29 19:17:07 +03:00
Alexey Sedunov
95f6acdddf [REVERTED] 8c72b02 Alexey Sedunov on 3/21/2016 at 19:14 (committed on 3/24/2016 at 18:42)
Light Classes: Constant expression evaluator for light annotation arguments
2016-03-29 19:17:05 +03:00
Alexey Sedunov
4896d90c79 [REVERTED] 28b8cfc Alexey Sedunov on 3/22/2016 at 21:26 (committed on 3/24/2016 at 18:42)
Spring Support: Show Spring line markers for Kotlin classes
2016-03-29 19:17:04 +03:00
Alexey Sedunov
bad1794577 [REVERTED] 0eda1f3 Alexey Sedunov on 3/14/2016 at 18:54 (committed on 3/24/2016 at 18:42)
Spring Support: SpEL injections
2016-03-29 19:17:02 +03:00
Alexey Sedunov
1970582dd8 [REVERTED] 2692a7d Alexey Sedunov on 2/21/2016 at 00:50 (committed on 3/24/2016 at 18:42)
Spring Support: Inspection for Spring configuration
2016-03-29 19:17:00 +03:00
Alexey Sedunov
124776643e [REVERTED] 86c551b Alexey Sedunov on 3/24/2016 at 19:21 (committed on 3/24/2016 at 19:23)
Misc: Сhangelog update
2016-03-29 19:16:59 +03:00
Alexey Sedunov
bfcf7d2b1e [REVERTED] 2dd83b1 Alexey Sedunov on 3/25/2016 at 16:08 (committed on 3/25/2016 at 16:21)
Misc: Fetch Spring libraries to dependencies directory
2016-03-29 19:16:58 +03:00
Alexander Udalov
4a533168d9 Rework const val generation in multifile classes
Do not query MultifileClassCodegen#classBuilder early on: this causes the class
file for the facade to be prematurely dumped to the disk in some cases, when
that class file is not yet completely generated. Instead fork the logic in
PropertyCodegen#generateSyntheticMethodIfNeeded: save metadata in parts,
generate method in the facade
2016-03-29 17:53:32 +03:00
Alexander Udalov
f31dca32a4 Flush stdout and stderr before shutdown in scripts
Although a test is present, it doesn't check the behavior because it seems that
in the test environment both streams are necessarily flushed

 #KT-9546 Fixed
2016-03-29 17:53:18 +03:00
Alexander Udalov
be4b432778 Clarify KClass equality
#KT-11502 Fixed
2016-03-29 17:14:51 +03:00
Alexey Sedunov
cbb6f7ed63 Generate equals()/hashCode(): Fix hashCode() implementation
#KT-11638 Fixed
2016-03-29 15:21:17 +03:00
Ilya Gorbunov
768da05ba9 Update dump declaration mappings tests to reflect new constant generation in multifile facades. 2016-03-29 14:34:32 +03:00
Ilya Gorbunov
ce09612804 Write ReadMe about what constitutes the public API and what is an incompatible change 2016-03-29 13:50:08 +03:00
Ilya Gorbunov
8888537137 Reference dump of kotlin-runtime and kotlin-stdlib of 1.0.2-dev
New public implementation methods 'renderLambdaToString' which are called only from the same module.
2016-03-29 13:50:06 +03:00
Ilya Gorbunov
26e905e90e Reference dump of kotlin-runtime and kotlin-stdlib of 1.0.0 and 1.0.1 2016-03-29 13:50:04 +03:00
Ilya Gorbunov
4c113ad882 Prettify dump output format: indent members and enclose them in { }, space before : in supertypes. 2016-03-29 13:50:02 +03:00
Ilya Gorbunov
ff0a24a750 Move test output files closer to test data.
Move reference dump out of test directory.
2016-03-29 13:50:01 +03:00
Ilya Gorbunov
2e87a08c8d Ignore kotlin visibilities for classes in effectively public package kotlin.jvm.internal 2016-03-29 13:49:59 +03:00
Ilya Gorbunov
ce4b161df4 Find single jar file with binaries in target folders without knowning its version in advance. 2016-03-29 13:49:57 +03:00
Ilya Gorbunov
a75093650c Add JvmField and const tests for exposed fields visibility 2016-03-29 13:49:55 +03:00
Ilya Gorbunov
0d12d60e8a Infer lateinit-exposed field effective visibility from its setter visibility. 2016-03-29 13:49:53 +03:00
Ilya Gorbunov
f2cb5edf1a Do not consider protected members in final class as public API 2016-03-29 13:49:51 +03:00
Ilya Gorbunov
4e250e4dd1 Refactor data structures 2016-03-29 13:49:49 +03:00
Ilya Gorbunov
10792de4c1 Treat inline-exposed internal API as effectively public.
Comment out unsupported cases.
2016-03-29 13:49:48 +03:00
Ilya Gorbunov
0aaf0ba60f Take into account field kotlin visibility 2016-03-29 13:49:46 +03:00
Ilya Gorbunov
bd8c83bee2 Merge public static API of non-public base supertypes into public subtype 2016-03-29 13:49:44 +03:00
Ilya Gorbunov
472b386101 Tests for public API dump tool. 2016-03-29 13:49:43 +03:00
Ilya Gorbunov
da032e371a Minor: refactoring 2016-03-29 13:49:41 +03:00
Ilya Gorbunov
88a038a0df Filter out nested classes in non-public outer classes. 2016-03-29 13:49:39 +03:00
Ilya Gorbunov
a9fd1de263 Tool to dump binary API signatures from compiled JAR.
Incorporate declaration mappings output from the compiler to take into account kotlin visibilities.
2016-03-29 13:49:38 +03:00
Ilya Gorbunov
25abdf9fdb Tests for declaration mappings dumping from compiler 2016-03-29 13:49:36 +03:00
Ilya Gorbunov
e7d75fccd6 Introduce compiler option to dump declaration mapping. 2016-03-29 13:49:34 +03:00
Ilya Gorbunov
4e49187549 Dump declaration mapping during codegen process. 2016-03-29 13:49:33 +03:00
Natalia Ukhorskaya
68907d05c3 J2K produces unresolved 'toArray' calls for java Collection#toArray(T[])
#KT-11600 Fixed
2016-03-29 11:26:18 +03:00
Alexander Udalov
a8bebeb48d Load annotations of const properties from multifile classes
Rework backing field generation logic in PropertyCodegen to switch the
ClassBuilder instance for a multifile part to that of the corresponding facade
class. This became needed because multifile parts, and their metadata, are
generated _before_ the multifile facade class and otherwise we would never
record that there's a synthetic '$annotations' method for a const val and would
not write that to the protobuf message for the property.

See also bad83200

 #KT-10892 Fixed
2016-03-28 21:11:14 +03:00
Alexander Udalov
6924d883eb Support reflection calls to multifile class members
#KT-11447 Fixed
2016-03-28 21:11:14 +03:00
Mikhail Glukhikh
9fa101b3fe Changelog: 1.0.1-2 added 2016-03-28 20:22:36 +03:00
Mikhail Glukhikh
a541aaafd8 Protected in final inspection: protected modifier is effectively private in final classes #KT-6674 Fixed 2016-03-28 19:03:16 +03:00
Mikhail Glukhikh
20bac6178c Array in data class inspection: warning on array properties in data classes #KT-10299 Fixed 2016-03-28 19:00:16 +03:00
Yan Zhulanow
047828bd6d Fix EA-79598: getNode() in JspxImportListImpl returns null 2016-03-28 14:43:07 +03:00
Alexander Udalov
a6610d1b0c Drop obsolete JVM intrinsics, rename JavaClassArray -> ArrayOf 2016-03-28 14:24:23 +03:00
Alexander Udalov
d62535c388 Minor, drop unnecessary workaround of obsolete issue 2016-03-28 14:14:56 +03:00
Alexander Udalov
a8e6a9c828 Minor, add JDK to multi-module Java analysis test 2016-03-28 14:14:55 +03:00
Alexander Udalov
2dab56db8e Do not report "incomplete hierarchy" in decompiler
It's fine if the decompiler can't find some classes; it won't do anything
except render their FQ names which are fully available
2016-03-28 14:13:59 +03:00
Alexander Udalov
8d64ed7f3f Do not produce error classes for not found annotations 2016-03-28 14:13:59 +03:00
Alexander Udalov
e915e1548c Fix multiple 'unresolved java classifier' errors
Use the same component (NotFoundClasses) as in loading of compiled Kotlin
symbols.

Some tests were changed to avoid a diagnostic that is now reported when a
non-found class is encountered in a signature (e.g. staticMethod.1.java where
JDK seems to be not configured)

 #KT-10493 Fixed
 #KT-10820 Fixed
 #KT-11368 Fixed
2016-03-28 14:13:59 +03:00
Alexander Udalov
873cf439de Drop MissingDependencyErrorClass and related code
No longer needed because of the proper support for missing classes in
deserialization (see NotFoundClasses.kt)
2016-03-28 14:13:59 +03:00
Alexander Udalov
db5e00bcc0 Report error if some deserialized classes are missing in dependencies
Technically we often can compile code which uses missing classes (as long as
nothing is called on them) but it seems better to let the user know something's
wrong in their setup before the error manifests itself at runtime. Also the
Java compiler does the same

 #KT-4328 Fixed
2016-03-28 14:13:59 +03:00
Alexander Udalov
accf80a624 Do not create error types in deserialization on not found classes
For a class which cannot be resolved in the current deserialization session,
create a special ClassDescriptor instance with an empty scope and put in the
correct package under the current module. Codegen will perfectly map such class
to its JVM signature (because only the precise FQ name is needed, which is
available). For more details on this approach, see the issue description.

 #KT-4328 Fixed
 #KT-11497 Fixed
2016-03-28 14:13:59 +03:00
Alexander Udalov
3944d56ac2 Minor, remove unnecessary type parameter in CallChecker#check 2016-03-28 14:13:59 +03:00
Alexander Udalov
2c81824689 Rework and prettify CompileKotlinAgainstCustomBinariesTest
Do not use MockLibraryUtil to compile Kotlin code: this allows to avoid
rebuilding kotlin-compiler.jar every time before running a test. Also extract a
few utilities, use Kotlin stdlib where possible
2016-03-28 14:13:59 +03:00
Zalim Bashorov
9f069843e8 Minor: precise incremental compilation no longer experimental 2016-03-28 12:57:04 +03:00
Ilya Gorbunov
3779fb2521 Minor: Do not recompile markdown every time. 2016-03-26 01:02:53 +03:00
Natalia Ukhorskaya
470027bfd8 J2K: specify type for variables with anonymous type if they have write accesses 2016-03-25 20:27:19 +03:00
Natalia Ukhorskaya
23908fb8f3 J2K produces unresolved 'toArray' calls for java Collection#toArray()
#KT-11600 Fixed
2016-03-25 20:27:19 +03:00
Natalia Ukhorskaya
79bac598bf J2K breaks code if applied to a java class with static field which is accessed from another java class
#KT-11587 Fixed
2016-03-25 20:27:19 +03:00
Natalia Ukhorskaya
c7ae9981cb J2K: Quote '$' symbols in converted strings
#KT-6800 Fixed
2016-03-25 20:27:19 +03:00
Natalia Ukhorskaya
4bc4f0bce7 J2K: not initialized field of non-primitive type should have null initializer
#KT-11544 Fixed
2016-03-25 20:27:19 +03:00
Natalia Ukhorskaya
8616c9588d J2K, minor: pass nullability as additional parameter for more flexibility 2016-03-25 20:27:19 +03:00
Natalia Ukhorskaya
59930c32c4 Debugger, refactoring in tests: add ability to skip some variables in printFrame 2016-03-25 20:27:19 +03:00
Natalia Ukhorskaya
a09814961f Debugger: more precise context expression in codeFragment
#KT-11380 Fixed
2016-03-25 20:27:19 +03:00
Yan Zhulanow
77b7b46542 Kapt: fix sequential build with kapt when Kotlin source file was modified 2016-03-25 19:32:18 +03:00
hansenji
100252b18b Handle elements in two different classes with the same name annotated with the same annotation. 2016-03-25 19:32:18 +03:00
hansenji
b9dc92d7cf Removed Test for deprecated annotation 2016-03-25 19:32:18 +03:00
Valentin Kipyatkov
e62c8a0860 Unescape single quote when converting to string template 2016-03-25 18:11:34 +03:00
Valentin Kipyatkov
7f2ccb5613 KT-11295 AssertionError in ConvertToStringTemplateIntention.fold
#KT-11295 Fixed
2016-03-25 18:11:34 +03:00
Valentin Kipyatkov
c1499e7cb6 KT-11576 Unused symbol warning: add quickfix for annotated declarations
#KT-11576 Fixed
2016-03-25 18:11:34 +03:00
Valentin Kipyatkov
03d7c5764d Moved confusing utility from KtPsiUtil (but the code in KtLightClassForExplicitDeclaration is still incorrect!) 2016-03-25 18:11:34 +03:00
Valentin Kipyatkov
02d309c9cf KT-11481 "Add import" intention is not available for 'is' branches in when
#KT-11481 Fixed
2016-03-25 18:11:34 +03:00
Nikolay Krasko
f93bf9fbb4 Fix generating folder for java8 tests 2016-03-25 17:33:32 +03:00
Alexey Sedunov
c4eb8ceb53 Compiler Daemon: Use clearHandlersCache() method instead of Reflection API
(old code may fail in IDEA Ultimate due to field obfuscation)
2016-03-25 16:00:08 +03:00
Alexey Sedunov
2d0b06dc2d Project Configuration: Do not rely on field names when reflecting on LibraryOptionsPanel (they can differ due to Ultimate obfuscation) 2016-03-25 15:56:28 +03:00
Alexey Sedunov
2dd83b12d3 Misc: Fetch Spring libraries to dependencies directory 2016-03-25 15:21:16 +03:00
Nikolay Krasko
00239914fa Minor: refactoring 2016-03-25 14:10:41 +03:00
Nikolay Krasko
0f6e7cc277 Minor: add contract annotation 2016-03-25 14:10:41 +03:00
Nikolay Krasko
1524f099b3 Rewrite KotlinCliJavaFileManagerTest with KotlinTestWithEnvironment 2016-03-25 14:10:41 +03:00
Nikolay Krasko
5fb7b1be80 Move java8 tests 2016-03-25 14:10:41 +03:00
Nikolay Krasko
3a747e0c38 Refactoring: move utility methods to idea module 2016-03-25 14:10:41 +03:00
Zalim Bashorov
4b8c9c8b39 Minor: fix testdata 2016-03-24 22:28:40 +03:00
Zalim Bashorov
9a9b863c9d IC: add tests with moving files
Additionally added the ability to use directories in IC tests.

 #KT-8002 Obsolete
2016-03-24 22:28:40 +03:00
Kirill Rakhman
d230afe726 Reuse BindingContext and perform quickfix directly on PSI instead of the editor 2016-03-24 19:39:57 +01:00
Kirill Rakhman
cc730c36ad Implement quickfix to remove '.java' when KClass is expected
Fixes #KT-11078
2016-03-24 19:39:57 +01:00
Alexey Sedunov
5b272921e6 Misc: Favor intellij-core over idea-full in the idea-completion dependencies (to prevent loading of scambled PsiFileImpl from Ultimate SDK) 2016-03-24 20:49:09 +03:00
Valentin Kipyatkov
384183ad7b Intention to convert raw string literal to ordinary one
#KT-5208 Fixed
2016-03-24 19:05:56 +03:00
Valentin Kipyatkov
ecebb80bbe Added intention description 2016-03-24 19:05:55 +03:00
Valentin Kipyatkov
3d422b47cb Intention action to convert string to raw string
(half of KT-5208)
2016-03-24 19:05:55 +03:00
Alexey Sedunov
86c551b27b Misc: Сhangelog update 2016-03-24 18:23:34 +03:00
Michael Bogdanov
6547fa1d4c Replace hashes in bytecode listing tests with 'HASH' 2016-03-24 16:17:58 +01:00
Alexey Sedunov
2692a7d35c Spring Support: Inspection for Spring configuration 2016-03-24 17:42:13 +03:00
Alexey Sedunov
0eda1f3969 Spring Support: SpEL injections
#KT-11406 Fixed
2016-03-24 17:42:12 +03:00
Alexey Sedunov
28b8cfc3d5 Spring Support: Show Spring line markers for Kotlin classes
#KT-3741 Fixed
2016-03-24 17:42:11 +03:00
Alexey Sedunov
8c72b02c9b Light Classes: Constant expression evaluator for light annotation arguments 2016-03-24 17:42:10 +03:00
Alexey Sedunov
0a71eb777e Spring Support: Implement Spring-specific references 2016-03-24 17:42:08 +03:00
Alexey Sedunov
72a17b0671 Spring Support: Inspection for final Spring-annotated classes/functions
#KT-11098 Fixed
2016-03-24 17:42:07 +03:00
Alexey Sedunov
161d11d9ec Spring Support: Test framework 2016-03-24 17:42:06 +03:00
Alexey Sedunov
d8a033e8a5 Misc: Configure dependency on Spring support and related plugins: J2EE,
JSP, persistence, database tools, CSS
2016-03-24 17:42:05 +03:00
Alexey Sedunov
8e7e3a3b99 Misc: Configure IDEA Ultimate dependencies 2016-03-24 17:42:04 +03:00
Alexey Sedunov
d76e8f2d67 Light Classes: Generate light wrappers for name identifiers 2016-03-24 17:42:01 +03:00
Alexey Sedunov
fefa0baeee Light Classes: Generate light wrappers for annotation entries 2016-03-24 17:41:58 +03:00
Alexey Sedunov
4debf0cc45 Java To Kotlin: KtLightModifierList 2016-03-24 17:41:57 +03:00
Alexey Sedunov
19850ffb86 Java To Kotlin: KtLightModifierList.java (rename to .kt) 2016-03-24 17:41:56 +03:00
Michael Bogdanov
6737bc12f1 Fix for KT-11519: Version 1.0.1 fails with NPE in com.sun.beans.TypeResolver.resolve() where v1.0.0 works fine
#KT-11519 Fixed
2016-03-24 15:18:31 +01:00
Valentin Kipyatkov
f0ef04a6a8 Changed highlighting range for unresolved annotation name to not include '@'
#KT-11529 Fixed
2016-03-24 16:44:58 +03:00
Michael Bogdanov
0fdba49315 Test for KT-11514: Platform Double is converted to Int when comparing to Int literal
#KT-11514 Fixed
2016-03-24 14:11:25 +01:00
Michael Bogdanov
d0aac74e72 Fix for KT-11590: IllegalAccessError: SAM adapter generated with invalid accessibility for inline function
#KT-11590 Fixed
2016-03-24 14:11:25 +01:00
Alexey Tsvetkov
33cd661aad Minor: removed experimental-ic-build.log duplicating build.log 2016-03-24 14:57:17 +03:00
Alexey Tsvetkov
f3ee255436 Normalize output for windows tests 2016-03-24 14:55:27 +03:00
Michael Bogdanov
a851bb0fff Fix for KT-11584: Regression in 1.0.1: incorrect comparison of Long! with integer constant
#KT-11584 Fixed
2016-03-24 08:51:43 +01:00
Denis Zharkov
628f9050fb Report UNUSED_EXPRESSION on anonymous functions 2016-03-23 20:11:51 +03:00
Denis Zharkov
16736e3a0e Resolve anonymous functions in block as expression
#KT-7265 Fixed
2016-03-23 20:08:15 +03:00
Mikhail Glukhikh
77e37ff75d Changelog from 1.0.1 added 2016-03-23 15:27:13 +03:00
Mikhail Glukhikh
46290798ca Refactoring (same logic in ControlFlowInformationProvider / DataFlowValueFactory) 2016-03-23 15:04:13 +03:00
Mikhail Glukhikh
32e7f9e58f Correct handling of local class / anonymous object cases for KT-10445 / KT-10042 2016-03-23 15:04:09 +03:00
Mikhail Glukhikh
b975b7d26e More accurate CFG for local class constructors (now they are not considered unconditionally executed) #KT-10042 Fixed 2016-03-23 15:04:05 +03:00
Mikhail Glukhikh
8756cba2f5 Minor: test renamed 2016-03-23 15:04:01 +03:00
Mikhail Glukhikh
bc4ec97043 Captured value initialization is no more allowed #KT-10445 Fixed 2016-03-23 15:03:50 +03:00
Anton Sukhonosenko
e8b665f600 #KT-10883 Fixed 2016-03-22 17:23:16 +01:00
Alexander Udalov
348125acb3 Fix visibility of protected classes in bytecode
Protected should be translated to public as in Java so that everything would
work at runtime. The real visibility is still saved to an InnerClasses
attribute

 #KT-8269 Fixed
 #KT-9246 Fixed
 #KT-10143 Fixed
2016-03-22 18:42:34 +03:00
Valentin Kipyatkov
28c5dde875 KT-7715 Highlight var's that can be replaced by val's
#KT-7715 Fixed
2016-03-22 18:01:52 +03:00
Ilya Chernikov
e5b5a8db42 Rollback partially a commit that dropped removePerfOutput functionality, fixes CompilerDaemonTest.testHelloApp
The commit was done by @yole in assumption that the function only affects PARF lines generated by compiler, but similar lines generated
by daemon infrastructure were affected as well, the mentioned test was failing since. CliBaseTest class was refactored, I place the removePerfOutput
function into AbstractCliTest class.
2016-03-22 11:15:38 +01:00
Michael Bogdanov
00cb2705da Add a test verifying anonymous object transform is performed correctly with ClassBuilder. 2016-03-21 18:37:28 +03:00
Ilya Gorbunov
1ae0040ca3 Minor: make variables initialized in defineClass lateinit instead of nullable. 2016-03-21 18:37:27 +03:00
Ilya Gorbunov
d9329456b5 ClassBuilder-to-ClassVisitor adapters should invoke methods of adapted ClassBuilder.
Call classBuilder.defineClass instead of ClassVisitor.visit.
Call classBuilder.newField instead of ClassVisitor.visitField.
2016-03-21 18:37:27 +03:00
Kirill Rakhman
146dca2cd6 Formatter: Remove spaces between expression and parentheses
#KT-11476 Fixed
2016-03-21 17:56:04 +03:00
Denis Zharkov
56477f0af8 Fix loading container type from Java
Load immutable flexible upper bound for 'Iterable<? super T>'

We load 'Collection<? super CharSequence>' as 'MutableCollection<in CharSequence>'
instead of 'MutableCollection<in CharSequence>..Collection<*>'
because it's obviously not typesafe to use any 'Collection<*>'
as argument for such type.

But there'se nothing bad with loading 'Iterable<? super CharSequence>'
as 'MutableIterable<*>..Collection<*>'. Same for other declarations that have
covariant mutable representation (currently Iterator, ListIterator).

Also there are useful use-cases when it's neccessary to use 'Iterable<*>'
as an argument for parameter with type 'Iterable<? super T>' (see matchers.kt test).

NB: Star-projections appear in examples because types like 'Collection<in CharSequence>'
with conflicting use-site projections are invalid in Kotlin, but they are valid in Java.
2016-03-21 16:46:46 +03:00
Denis Zharkov
c3e44ec199 Fix loading Java type arguments
Type arguments with use variance in java contradicting to Kotlin declaration-site variance should be loaded as star-projections

 #KT-11492 Fixed
2016-03-18 19:07:27 +03:00
Denis Zharkov
838fcf9a57 Load contavariantly projected collections in Java as mutable
#KT-3068 Fixed
2016-03-18 19:07:27 +03:00
Denis Zharkov
e54b25a35a Fix StackOverflowError while mapping recursive intersection-type
#KT-10972 Fixed
2016-03-18 19:07:27 +03:00
Denis Zharkov
67b59fa72f Prohibit nested intersection types in return position
#KT-11490 Fixed
2016-03-18 19:07:27 +03:00
Mikhail Glukhikh
90b5d3b9f5 Minor if-to-when refactoring 2016-03-18 18:54:01 +03:00
Mikhail Glukhikh
fa069214fd if to when intention now detects effectively else branches in subsequent code + performs more accurate comment handling #KT-10750 Fixed
Also #KT-11424 Fixed
2016-03-18 18:47:32 +03:00
Michael Bogdanov
c3d450f050 Fix for KT-11479: 1.0.2 Snapshot: CompilationException: Back-end (JVM) Internal error: Couldn't inline method call
#KT-11479 Fixed
2016-03-18 15:43:18 +01:00
Natalia Ukhorskaya
dde11b7f50 Report more info for errors from jdi 2016-03-18 15:19:03 +03:00
Natalia Ukhorskaya
6b4ea1ff19 Debugger: do not report errors from context file
#KT-11455 Fixed
2016-03-18 15:19:03 +03:00
Natalia Ukhorskaya
6752d0f180 Descriptors from library source should be visible from descriptors from libraries class files 2016-03-18 15:19:03 +03:00
Natalia Ukhorskaya
5b489d1986 Debugger: use StackFrameProxy from IDEA instead of StackFrame from JDI to show error message when debug info in corrupted
#EA-76187 - IE: FrameVisitor.findLocalVariable Fixed
2016-03-18 15:19:03 +03:00
Natalia Ukhorskaya
589d7007fc Skip additional visibility check for java classes in debug mode 2016-03-18 15:19:03 +03:00
Natalia Ukhorskaya
b79aa13242 Complete private members from libraries in Evaluate Expression dialog 2016-03-18 15:19:03 +03:00
Natalia Ukhorskaya
26c153639a Skip visibility check when resolving class in debug mode
#KT-11326 Fixed
2016-03-18 15:19:03 +03:00
Alexander Udalov
0fd8bec2ef Convert Java model to Kotlin, put in several files
Also move JavaPropertyInitializerEvaluator to ../components/
2016-03-18 14:48:58 +03:00
Alexander Udalov
0d74fc2290 Minor cleanup in Java model: fix warnings, remove unused 2016-03-18 14:48:57 +03:00
Alexander Udalov
0a54464420 Minor, JavaClass#getOriginKind -> isKotlinLightClass 2016-03-18 14:48:56 +03:00
Alexander Udalov
0ba0e2b10d Delete JavaTypeSubstitutorImpl, use PsiSubstitutor in JavaClassImpl
Also delete related tests
2016-03-18 14:48:56 +03:00
Alexander Udalov
291c713d8b Cleanup JavaElement model from methods used only in substitutor
Downcast everything used in JavaTypeSubstitutorImpl to *Impl, remove methods
from interfaces, inline/move some of them
2016-03-18 14:48:55 +03:00
Alexander Udalov
26bf0dca13 Remove interface JavaTypeSubstitutor, use implementation
After 151e55b JavaTypeSubstitutor is only used from inside PSI-based
implementation of Java structure
2016-03-18 14:48:55 +03:00
Alexander Udalov
e42cb2af40 Render 'annotation class not found' for error types in tests
After 13ae3d9 it became unclear whether an annotation mentioned in test data is
resolved or not, this change fixes that
2016-03-18 14:48:54 +03:00
Alexander Udalov
70dd79d7e4 Minor, rename TypeConstructorImpl -> ClassTypeConstructorImpl 2016-03-18 14:20:43 +03:00
Alexander Udalov
13ae3d96ab Simplify TypeConstructorImpl, extend it from AbstractClassTypeConstructor 2016-03-18 14:20:43 +03:00
Michael Bogdanov
b95e27fd87 Fix for KT-11478: "Couldn't inline method call" error
#KT-11478 Fixed
2016-03-18 11:07:47 +01:00
Denis Zharkov
ce8add2802 Fix common supertype calculation
Use star-projections instead of 'out Any?' in corner cases

 #KT-11468 Fixed
2016-03-18 10:12:00 +03:00
Mikhail Glukhikh
bace881463 Quick fix to make var with private setter final #KT-10859 Fixed 2016-03-17 18:18:07 +03:00
Mikhail Glukhikh
efdf6b9569 Minor 2016-03-17 17:47:10 +03:00
Alexey Tsvetkov
d1a8c0d09b Enable default incremental compilation by default in IDEA
#KT-11360 fixed
2016-03-17 15:47:51 +03:00
Denis Zharkov
fecb64560b Minor. Decrease method visibility 2016-03-16 20:23:42 +03:00
Denis Zharkov
d9a6d15fe4 Add tests for obsolete issues
#KT-4628 Obsolete
 #KT-3897 Obsolete
 #KT-3898 Obsolete
 #KT-7523 Obsolete
2016-03-16 20:23:36 +03:00
Denis Zharkov
bfa0b69ba9 Simplify SamCodegenUtil.getOriginalIfSamAdapter
At the monent adapters are either:
- synthetic extensions (no overrides)
- static members:
fake override always has one overridden from super class,
that should be created as a result of SamAdapterDescriptor.createSubsitutedCopy(),
hence should be instance of SamAdapterDescriptor
2016-03-16 20:23:01 +03:00
Denis Zharkov
1d0c37ff20 Cache read classes and method nodes for inline
It decrease GENERATE phase nearly for 10%
2016-03-16 20:23:01 +03:00
Denis Zharkov
26081bf817 Support loading Java annotations with TYPE_PARAMETER target 2016-03-16 20:23:01 +03:00
Denis Zharkov
04eb5ff4f7 Move test loading Java TYPE_USE annotation to Java8 module
#KT-11454 Fixed
2016-03-16 20:23:00 +03:00
Denis Zharkov
85329e59ca Remove nullability annotations attached to TYPE_USE position in tests
They do not work anyway by many reasons:
- 'org.jetbrains.annotations.*' are not TYPE_USE targeted
- raw type with annotated arguments is something very weird and should be
investigated
2016-03-16 20:23:00 +03:00
Denis Zharkov
e96024017f Move and fix tests on typeEnhancement with TYPE_USE annotations 2016-03-16 20:22:59 +03:00
Denis Zharkov
a644dd3ae9 Create tests for TYPE_USE nullability annotations
- tests and declarations for checkerframework has been moved,
because they only Java 8 targeted
- tests for eclipse annotations has been just copied,
because there are two jars: one for Java 8 and other for earlier versions
2016-03-16 20:22:59 +03:00
Denis Zharkov
3f3c2bb272 Minor. Update eclipse nullability annotation sources
Accordingly to their repository
2016-03-16 20:22:58 +03:00
Denis Zharkov
c9c9f7ff38 Minor. Simplify LazyJavaClassMemberScope.getFunctionsFromSupertypes 2016-03-16 20:22:58 +03:00
Denis Zharkov
78c9dffe00 Refine return type of MemberScope.getContributedFunctions 2016-03-16 20:22:58 +03:00
Denis Zharkov
50d258e7f4 Optimize CF merge operations
Return incoming value if it's single
2016-03-16 19:27:28 +03:00
Denis Zharkov
4bea054e4b Optimize TowerResolver.run implementation
- run `processor` at each level instead of list construction
- make it as lazy as possible

Speed up analysis time nearly for 2-5%
2016-03-16 19:27:28 +03:00
Nikolay Krasko
ee50aec734 Don't add a blank line between one line class and object (KT-10965) 2016-03-16 18:41:28 +03:00
Alexey Tsvetkov
61090d7027 Refactoring: optimize createDefaultSourceDirectorySet 2016-03-16 16:43:25 +03:00
Alexey Tsvetkov
d1abc87857 Fix NoSuchMethodError with Gradle 2.12
#KT-11351 fixed
2016-03-16 16:43:24 +03:00
Alexey Tsvetkov
d6c2f77125 Fix Process.waitFor freeze on windows when gradle daemon is stopped during tests 2016-03-16 16:43:24 +03:00
Alexander Udalov
b2cffeeb24 Fix 'IDE' scope file pattern by including 'src' recursively
See b328f37
2016-03-16 16:10:26 +03:00
NitroG42
c66f4450d8 Add new expressions to template
Added two missing expressions for live-templates, the className(), and
the functionName()
2016-03-16 13:40:33 +01:00
Zalim Bashorov
f00615c00b Minor: source sources of SourceToOutputMap when dump it to make IC tests more stable 2016-03-16 14:42:13 +03:00
Kirill Rakhman
48310d66da Implement quick fix for converting primitive types
#KT-10476 Fixed
2016-03-16 10:58:29 +01:00
Alexander Udalov
b328f37495 Add all IDE modules to scope 'IDE', exclude tests
Exclude test roots (add only src/* and testData/*) to prevent clash with the
built-in "Tests" scope
2016-03-16 12:52:20 +03:00
Nikolay Krasko
94e8ba7c4b "Code formatter doesn't remove spaces in single line properties" fixed (KT-11076)
#KT-11076 Fixed
2016-03-16 12:38:26 +03:00
Nikolay Krasko
2db888a646 Accurate work with adding/removing context of tests.
Need this because of KEEP_FIRST_COLUMN_COMMENT setting. Comments accidentally left on first
collumn cause the bad formatting.

 #KT-4175 Fixed
2016-03-16 12:38:24 +03:00
Nikolay Krasko
8ad0c1ac01 Force new line if the whitespace between comments doesn't have a line break
Tweeking KEEP_FIRST_COLUMN_COMMENT setting and one-line comments generated on the same line.

 #KT-4175 In Progress
2016-03-16 12:38:23 +03:00
Nikolay Krasko
85bc32a884 Adjust move code tests for KEEP_FIRST_COLUMN_COMMENT option
#KT-4175 In Progress
2016-03-16 12:38:21 +03:00
Nikolay Krasko
085deec717 Make J2K pay more attention to original formatting of comments. Better support for KEEP_FIRST_COLUMN_COMMENT
#KT-4175 In Progress
2016-03-16 12:38:20 +03:00
Nikolay Krasko
a9f11d2c64 Always add new line space with space before to deal with KEEP_FIRST_COLUMN_COMMENT option
InvertIfConditionIntention, RemoveBracesIntention tests are affected

 #KT-4175 In Progress
2016-03-16 12:38:19 +03:00
Nikolay Krasko
6193987d0d Reformat code should not align comments (KT-4175)
#KT-4175 In Progress
2016-03-16 12:38:17 +03:00
Natalia Ukhorskaya
334c6ba71a Refactoring: rename kotlin-android-plugin to idea-android 2016-03-15 20:26:14 +03:00
Natalia Ukhorskaya
d2de74226e Refactoring: rearrange dependencies in android modules 2016-03-15 20:25:54 +03:00
Natalia Ukhorskaya
ec9a6aacd5 Refactoring: move android-extensions-* module under separate module group 2016-03-15 20:25:52 +03:00
Natalia Ukhorskaya
78d4860215 Refactoring: rename android-jps-plugin to android-extensions-jps 2016-03-15 20:25:50 +03:00
Natalia Ukhorskaya
bf4c92d903 Refactoring: rename android-idea-plugin to android-extensions-idea 2016-03-15 20:25:48 +03:00
Natalia Ukhorskaya
7e6fa8ef17 Refactoring: rename android-compiler-plugin to android-extensions-compiler 2016-03-15 20:25:45 +03:00
Natalia Ukhorskaya
93161be199 Configure Kotlin: restore all changed files in undo action 2016-03-15 20:25:42 +03:00
Natalia Ukhorskaya
e31202ff7c Show only changed files in notification "Kotlin not configured" 2016-03-15 20:25:36 +03:00
Natalia Ukhorskaya
7c3dd3e139 Minor: fix warnings 2016-03-15 20:21:21 +03:00
Natalia Ukhorskaya
6b48eae03e Configure Kotlin for Android: add kotlin plugin to project build.gradle file.
Do not add mavenCentral dependency if jcenter is present
2016-03-15 20:20:24 +03:00
Natalia Ukhorskaya
e611154580 Minor: fix testData after e2d2d696c0d8b24ebe310fd880a912d6eb428872s 2016-03-15 14:53:03 +03:00
Ilya Gorbunov
02bb7f2f0d Remove the compiler option "Xmultifile-facades-open" 2016-03-15 14:10:33 +03:00
Natalia Ukhorskaya
e2d2d696c0 Add function name to fake local variable for inline argument 2016-03-15 13:25:49 +03:00
Mikhail Glukhikh
a830d80dac Values equality no more provides guarantee for their types equality (for open types or types with overridden equals) #KT-11280 Fixed 2016-03-15 11:01:39 +03:00
Michael Bogdanov
3eb6749377 Call done on when mapping transformation end 2016-03-15 10:04:28 +03:00
Alexander Udalov
4f77b02a58 Rename 'ins' -> 'Ins' in BuiltinsPackageFragment and related classes 2016-03-14 20:41:46 +03:00
Alexander Udalov
777ef32d65 Move AnnotationsImpl to frontend, delete unused DefaultAnnotationArgumentVisitor 2016-03-14 20:05:19 +03:00
Alexander Udalov
11409ec6cf Move some function type utilities from descriptors to frontend 2016-03-14 19:45:09 +03:00
Alexander Udalov
63eb6712eb Rename getParameterTypeProjectionsFromFunctionType -> getValueParameterTypesFromFunctionType
Also add getValueParametersCountFromFunctionType which doesn't create a new
list every time but only returns the number of value parameters
2016-03-14 19:45:08 +03:00
Alexander Udalov
5b7115dc38 Minor, drop deprecated KotlinBuiltIns.getExtensionFunction 2016-03-14 19:45:08 +03:00
Alexander Udalov
516484c905 Use DFS in isFunctionTypeOrSubtype
To prevent exponential working time on weird hierarchies
2016-03-14 19:24:18 +03:00
Alexander Udalov
117d0bcf03 Fix multiple exceptions related to subtypes of function types
The main change is in FunctionsTypingVisitor#visitLambdaExpression, where we
incorrectly allowed subtypes of function types to be expected type during
resolution of lambdas

Also see EA-70485

 #KT-9820 Fixed
2016-03-14 19:24:17 +03:00
Alexander Udalov
33ff1e1e29 Use correct function to check for function type in InlineParameterChecker
There's no use of noinline/crossinline modifiers on parameters of _subtypes_ of
function types

 #KT-11411 Fixed
2016-03-14 19:24:08 +03:00
Alexander Udalov
c18fab82e5 Simplify and rename function type utilities
- isFunctionType -> change the only usage in TracingStrategyForInvoke to check
  for exact function type
- isExtensionFunctionType -> change all usages to check for exact extension
  function type because extension function types are uninheritable in Kotlin
- isExactFunctionType -> isNonExtensionFunctionType
- isExactExtensionFunctionType -> isExtensionFunctionType
- isExactFunctionOrExtensionFunctionType -> isFunctionType
- isFunctionOrExtensionFunctionType -> isFunctionTypeOrSubtype
2016-03-14 19:24:07 +03:00
Alexander Udalov
e308f2acdb Minor, fix warnings and remove weird comments in KotlinBuiltIns 2016-03-14 19:24:07 +03:00
Alexander Udalov
2ce661af98 Rename KotlinBuiltIns.getFunctionType -> createFunctionType, move to functionTypes.kt 2016-03-14 19:24:06 +03:00
Alexander Udalov
fd344561fc Move static function type utilities from KotlinBuiltIns to functionTypes.kt 2016-03-14 19:24:05 +03:00
Mikhail Glukhikh
569a5888ff do...while (true) is now considered infinite loop in CFA #KT-3896 Fixed
Also #KT-3883 Fixed
Also #KT-4986 Fixed
2016-03-14 16:13:14 +03:00
Mikhail Glukhikh
4cf3ec3df2 Minor: ControlFlowInformationProvider cleanup 2016-03-14 16:13:05 +03:00
Mikhail Glukhikh
7232c5ccc1 Minor: FILE directives fixed in two tests 2016-03-14 15:49:50 +03:00
Michael Bogdanov
92f1a20d5f New name generation for transformed when classes 2016-03-14 12:22:06 +03:00
Michael Bogdanov
a72636afb8 Code clean 2016-03-14 11:26:51 +03:00
Michael Bogdanov
bec6126b06 Support when mapping transformation on inlining 2016-03-14 11:24:39 +03:00
Michael Bogdanov
b88260b4f9 RegenerationInfo renamed to TransformationInfo 2016-03-14 10:45:39 +03:00
Michael Bogdanov
c062fff633 All regeneration infos moved to one file 2016-03-14 10:45:38 +03:00
Michael Bogdanov
56d8e4d170 Old/NewClassName funs in RefenerationInfo converted to properties 2016-03-14 10:45:38 +03:00
Michael Bogdanov
bbb838765c Obtain regenerated class name through RegeneratedInfo 2016-03-14 10:45:37 +03:00
Michael Bogdanov
ddd992d3dd AnonymousObjectRegenerationInfo java->kotlin convertion 2016-03-14 10:45:37 +03:00
Michael Bogdanov
da76bf7b03 AnonymousObjectRegenerationInfo.java->AnonymousObjectRegenerationInfo.kt 2016-03-14 10:45:36 +03:00
Michael Bogdanov
7e3e1554fa Added canRemoveAfterTransformation method 2016-03-14 10:45:36 +03:00
Michael Bogdanov
8c9d8778eb Introduced base class for AnonymousObjectGeneration 2016-03-14 10:45:35 +03:00
Michael Bogdanov
c6007c91f7 AnonymousObjectGeneration refactoring 2016-03-14 10:45:35 +03:00
Michael Bogdanov
a0f050fc69 Removed AnonymousObjectGeneration from RegeneratedClassContext 2016-03-14 10:45:34 +03:00
Nikolay Krasko
60ee5441cf Update links in Editing Kotlin section 2016-03-13 19:53:18 +03:00
Mikhail Glukhikh
f76efb68f2 Strictfp on a class is now a warning #KT-11109 Fixed 2016-03-12 13:17:11 +03:00
Alexander Udalov
173a838f8c Minor, improve some usages of function type utilities
Re change in FunctionsHighlightingVisitor:
KBI#isFunctionOrExtensionFunctionType already takes care of supertypes, no need
to do additional loop
2016-03-11 21:11:25 +03:00
Alexander Udalov
52309cd10e Minor, drop handling of deprecated kotlin.Extension annotation 2016-03-11 21:11:24 +03:00
Alexander Udalov
90a48d3b35 Minor, move some utilities out of FunctionDescriptorUtil 2016-03-11 21:11:24 +03:00
Alexander Udalov
994dc46bcd Write nullability annotations on extension receiver parameters
#KT-5429 Fixed
2016-03-11 15:20:32 +03:00
Pavel V. Talanov
597c571f25 Fix diagnostic range when some qualifier is unresolved in "@a.b.c.Anno"
#KT-7747 Fixed
2016-03-11 15:00:02 +03:00
Natalia Ukhorskaya
35271af07c Do not convert invalid files to Kotlin 2016-03-11 13:56:10 +03:00
Natalia Ukhorskaya
468c869c0c Show notification for files converted to Kotlin after project sync 2016-03-11 13:56:07 +03:00
Natalia Ukhorskaya
ebaf9899b0 Convert Java Activity to Kotlin after gradle sync finished 2016-03-11 13:56:05 +03:00
Natalia Ukhorskaya
40e89c76a9 Android: add action to create new activity on Kotlin
#KT-11264 Fixed
2016-03-11 13:56:02 +03:00
Natalia Ukhorskaya
b50f2dc6e5 J2K: Use parameters nullability for method call 2016-03-11 12:08:10 +03:00
Natalia Ukhorskaya
c1df0e4aeb Minor: include AbstractJavaToKotlinCopyPasteConversionTest from idea module to J2K Tests run configuration 2016-03-11 12:08:10 +03:00
Natalia Ukhorskaya
c928237699 J2K: drop line breaks in some polyadic expressions 2016-03-11 12:08:10 +03:00
Natalia Ukhorskaya
f1b6bf7817 J2K: convert comments inside qualified expression correctly 2016-03-11 12:08:10 +03:00
Natalia Ukhorskaya
405b0b1df6 J2K: convert annotations in annotations parameters correctly
#KT-11126 Fixed
2016-03-11 12:08:10 +03:00
Natalia Ukhorskaya
7d594970ff J2K: convert protected member used outside of inheritors as public 2016-03-11 12:08:10 +03:00
Alexey Tsvetkov
52be775f28 Minor: add two accidentally deleted files to test case 2016-03-11 02:43:31 +03:00
Alexey Tsvetkov
d352905a72 Add incremental tests for parameters with default values 2016-03-10 23:36:40 +03:00
Ilya Gorbunov
d6506d9770 Minor: reformat code in JS stdlib 2016-03-10 23:24:29 +03:00
Alexey Tsvetkov
d7cda17d2a Minor: make it possible to run gradle incremental tests on CI
* Rename test so it won't be run by maven's integration-test phase
* Adjust allocated heap size
2016-03-10 23:00:11 +03:00
Pavel V. Talanov
5de4ce6f57 Minor, FunctionCodegen: add additional logging on missing function descriptor
Trying to diagnose light class building failures
2016-03-10 19:49:04 +03:00
Pavel V. Talanov
fc16d7c4fd Refactor, minor: extract exception logging to an util object 2016-03-10 19:49:03 +03:00
Pavel V. Talanov
9a5650a045 Add KtPsiFactory#createFileWithLightClassSupport
Allows to create light classes for KtFile built from text
2016-03-10 19:41:59 +03:00
Pavel V. Talanov
4246c7f326 Refactor: Provide API to create KtLightClassForFacade by synthetic file 2016-03-10 19:41:57 +03:00
Pavel V. Talanov
725f128b64 Minor: remove obsolete properties from KtLightClassForFacade 2016-03-10 19:41:55 +03:00
Michael Bogdanov
c38f28fb08 Restore last inline function call site line number on lambda inlining into @InlineOnly function 2016-03-10 17:08:17 +03:00
Denis Zharkov
2e9075115b Minor. Specify type arguments explicitly
Otherwise strange compilation error appears (see KT-11323)
2016-03-10 16:49:00 +03:00
Denis Zharkov
151e55b2fa Use descriptors for building SAM constructors
It helps to get rid of semantics duplicating and fixes known bugs

- SOE in OnlyAbstractMethodFinder.find
- type enhancement for SAM constructors

 #KT-11287 Fixed
 #KT-11322 Fixed
 EA-77989 Fixed
2016-03-10 16:49:00 +03:00
Denis Zharkov
b8b48c5f98 Extract common logic into AbstractTypeConstructor
Mostly it's about detecting loops in supertypes

Test data changes:
- Loops are being disconnected in Java classes too
- functions.kt: loops disconnection mechanism runs supertypes calculation,
so when we start check T it forces F' supertypes calculation, that ends
with CYCLIC_GENERIC_UPPER_BOUND reported on F

 #KT-11287 In Progress
2016-03-10 16:49:00 +03:00
Denis Zharkov
ea9f1b5649 Minor. Pull up method 2016-03-10 16:49:00 +03:00
Nikolay Krasko
d45fc3bad7 Avoid warnings from idea core during file system initialization on Windows.
Do not use idea custom file system for now.
See FileSystemUtil.java and IdeaWin32.java files for details.
2016-03-10 13:32:08 +03:00
Nikolay Krasko
518bd76f35 Don't write false values in SetSlice to binding context
Optimization is significant for USED_AS_RESULT_OF_LAMBDA slice
2016-03-10 13:30:02 +03:00
Nikolay Krasko
71f91c5ce7 Attempt to drop debug name for traces 2016-03-10 13:30:01 +03:00
Michael Bogdanov
1a5bf33190 Fix for KT-11034: Private set with @JvmStatic lateinit var doesn't compile
#KT-11034 Fixed
2016-03-10 10:17:27 +03:00
Ilya Gorbunov
856dd7d909 Minor: make AbstractBackspaceHandlerTest really abstract.
#KT-5728
2016-03-10 05:54:03 +03:00
Ilya Gorbunov
92003f626b kotlin.test: Make inline methods 'todo' and 'currentStackTrace' @InlineOnly not to loose stack trace.
Move related tests to separate file and verify the line numbers.
#KT-11348 Fixed
2016-03-10 04:28:24 +03:00
Pavel V. Talanov
c3a1643c6c Add test for obsolete KT-6481 Mark deprecated constructor calls with strikethrough 2016-03-09 18:41:00 +03:00
Alexey Tsvetkov
df3f163ee2 JS: inline safe calls
#KT-6912 fixed
2016-03-09 16:25:01 +03:00
Dmitry Jemerov
956e9f3847 Merge pull request #828 from cypressious/smart_lambda_param
Implement Smart Enter Processor for adding a lambda block
2016-03-09 12:39:19 +01:00
Kirill Rakhman
828a7de980 Simplify logic for last lambda fixer and set caret directly in first pass 2016-03-09 12:35:48 +01:00
Dmitry Jemerov
9cb980b211 Merge pull request #825 from mcgee/KT-5728
#KT-5728 Fixed
2016-03-09 12:27:36 +01:00
Alexander Udalov
8f7047817f Fix debugger testData after improving toString() of lambdas 2016-03-09 13:41:00 +03:00
Alexander Udalov
eef3631b8a Improve toString() for lambdas and function expressions
#KT-9952 Fixed
2016-03-09 10:49:26 +03:00
Alexander Udalov
bab127ad33 Remove some legacy codegen tests, move some to generated 2016-03-09 10:25:38 +03:00
Alexander Udalov
f8dfaf4599 Merge boxWithJava testData into box, delete BoxWithJava test 2016-03-09 10:25:38 +03:00
Alexander Udalov
16a0ddd2fb Merge boxMultiFile testData into box, delete BoxMultiFile test 2016-03-09 10:25:38 +03:00
Alexander Udalov
e115f80d6c Remove traces of 'boxWithStdlib' directory in other tests 2016-03-09 10:25:38 +03:00
Alexander Udalov
06a67e6602 Merge boxWithStdlib testData into box, delete BoxWithStdlib test 2016-03-09 10:25:38 +03:00
Alexander Udalov
22bfc9786a Add WITH_RUNTIME or WITH_REFLECT to boxWithStdlib testData 2016-03-09 10:25:38 +03:00
Alexander Udalov
2564a2f91f Do not include kotlin-reflect at runtime by default in codegen tests
Change some tests to either include reflection or to avoid using it
2016-03-09 10:25:38 +03:00
Alexander Udalov
20e36438e2 Move some tests from boxWithStdlib/ to box/
Move those tests which do not require neither stdlib nor reflect
2016-03-09 10:25:38 +03:00
Alexander Udalov
54a615fcd3 Support inlining 'arrayOf' and 'emptyArray' with no stdlib in classpath
Previously an exception was thrown on trying to inline arrayOf/emptyArray when
compiling with "-no-stdlib" (or in tests without a dependency on the stdlib),
because these functions were found in a built-in package fragment which does
not have the bytecode associated with it
2016-03-09 10:25:38 +03:00
Kirill Rakhman
f7af927e8f Don't set parameter names and register unresolved error correctly 2016-03-08 22:44:13 +01:00
Anton Sukhonosenko
5bb8bf7381 #KT-5728 Fixed
Code review fixes
2016-03-08 22:30:14 +03:00
Anton Sukhonosenko
31fea1d2b7 #KT-5728 Fixed 2016-03-08 22:30:07 +03:00
Dmitry Jemerov
bb4397612d fix tests: add inspection description 2016-03-08 19:04:23 +01:00
Dmitry Jemerov
649517be3a disable inspection by default 2016-03-08 17:43:25 +01:00
Manas Chaudhari
f54f56d86b Add quickfix for adding documentation 2016-03-08 17:43:16 +01:00
Manas Chaudhari
88fcad02a9 Implement Missing Documentation Inspection
#KT-1494 Fixed
2016-03-08 17:41:18 +01:00
Dmitry Jemerov
3626e90788 use Kotlin icon for Gradle framework support provider 2016-03-08 17:20:39 +01:00
Dmitry Jemerov
bfbd76cc14 KotlinIconProvider: J2K and cleanup 2016-03-08 17:20:36 +01:00
Dmitry Jemerov
26ebc075f4 KotlinIconProvider: rename to .kt 2016-03-08 17:20:32 +01:00
Dmitry Jemerov
ad48ff6a9e use regular Kotlin icon to represent Kotlin run configurations, leave old LAUNCH icon only for REPL
#KT-11041 Fixed
2016-03-08 17:20:30 +01:00
Dmitry Jemerov
94fc58885a use 16x16 icons for framework types and library presentations 2016-03-08 17:20:28 +01:00
Denis Zharkov
68f411395a Fix bridge generation for special builtin override
Use method itself signature as common bridge delegate

 #KT-11285 Fixed
2016-03-07 09:26:02 +03:00
Stanislav Erokhin
11f05005f6 Minor. Update run configuration Update-Dist-Run. 2016-03-07 06:14:21 +03:00
Kirill Rakhman
12237c3cba test lambda parameter smart enter processor 2016-03-05 00:49:26 +01:00
Ilya Gorbunov
9233d5a825 Minor: do not throw error immediately, return error message to 'require' who shall throw an IllegalArgumentException by itself. 2016-03-04 20:28:07 +03:00
Nikolay Krasko
79c00e14ca Restore structure of sources roots 2016-03-04 19:11:19 +03:00
Nikolay Krasko
2e7ac5e4bf Comment target to make changes more noticeable 2016-03-04 19:11:18 +03:00
Nikolay Krasko
ea340f2392 Do not depend on MOVE_SEARCH_FOR_REFERENCES_FOR_FILE global setting
Always search for references if something is under source root and disable search otherwise.

 #KT-11277 Fixed
2016-03-04 19:10:59 +03:00
Nikolay Krasko
8397a4cb5b Don't intercept move when there're no kotlin files
#KT-11277 Fixed
2016-03-04 19:10:05 +03:00
Mikhail Glukhikh
f9034fccb4 Changelog file 2016-03-04 17:09:46 +03:00
Pavel V. Talanov
1affb05b7b Fix typechecker in case of "for ((a, b) in) { }"
Fixes NDFDE
2016-03-04 16:52:34 +03:00
Pavel V. Talanov
363d545bd5 Parameters of function types are always considered local 2016-03-04 16:52:33 +03:00
Pavel V. Talanov
e121ef0fdc Add additional check to AbstractPsiCheckerTest
Check that KtDeclaration.resolveToDescriptor() utility does not throw
2016-03-04 16:52:32 +03:00
Pavel V. Talanov
37500e2cd5 Throw ISE earlier on passing certain types of declaration to ResolveSession#resolveToDescriptor() 2016-03-04 16:52:31 +03:00
Valentin Kipyatkov
5757a306aa Should fix EA-75417 2016-03-04 16:30:25 +03:00
Valentin Kipyatkov
7ba39bd8cf J2K: refactoring - AccessorBodyToExpression processing can be expressed as intention-based 2016-03-04 16:30:25 +03:00
Valentin Kipyatkov
05dc4c1c48 ResolutionFacade for synthetic files should be invalidated on changes in these synthetic files
Fixed EA-77017
2016-03-04 16:30:24 +03:00
Nikolay Krasko
28e85517eb Update project icon 2016-03-04 15:32:44 +03:00
Nikolay Krasko
bee13cd246 Update to IDEA 15.0.4 (143.2287.1) 2016-03-04 15:32:42 +03:00
Alexey Tsvetkov
a3893a3c2e Test IC for adding private inline function
#KT-9681 fixed
2016-03-04 15:11:27 +03:00
Alexey Tsvetkov
9523a8b88d Add missing enum entry added/removed tests
#KT-6200 fixed
2016-03-04 14:43:52 +03:00
Dmitry Petrov
3bbd8979e4 KT-9670: optimize Class <-> KClass wrapping/unwrapping as a special case of boxing/unboxing.
NB doesn't work for arrays of classes.
2016-03-04 10:14:21 +03:00
Dmitry Petrov
2ecb8896cc Converting optimization.boxing to Kotlin: convert & simplify 2016-03-04 10:14:21 +03:00
Dmitry Petrov
0555464a3b Converting optimization.boxing to Kotlin: rename files 2016-03-04 10:14:21 +03:00
Kirill Rakhman
a7ac01ee6f Implement Smart Enter Processor for the last function call argument being a lambda
Fixes #KT-6785
2016-03-03 23:48:29 +01:00
Dmitry Petrov
8660800af7 Constraint system builder shouldn't drop nullability when comparing signatures for specificity. 2016-03-03 19:23:43 +03:00
Dmitry Petrov
8a2b80fe3f Generalize signature comparison: checking for conflicting overloads.
Also, vararg parameter no longer conflicts with Array<out T>
(CONFLICTING_JVM_DECLARATIONS is reported, can be avoided using @JvmName).
2016-03-03 18:26:10 +03:00
Dmitry Petrov
4ac05f1cd8 Generalize signature comparison: callable references overloading conflict resolution. 2016-03-03 18:26:10 +03:00
Dmitry Petrov
c5f3cbc645 Generalize signature comparison: make it work for regular call overloading conflict resolution. 2016-03-03 18:26:10 +03:00
Dmitry Petrov
022162322d Introduce "flat signature" - a generalized abstraction for a (call) signatures that can be compared for specificity. 2016-03-03 18:26:10 +03:00
Dmitry Petrov
77b7128689 Check conflicting overloads for generic signatures. 2016-03-03 18:26:09 +03:00
Nikolay Krasko
ab962d9bae New project wizard with Gradle and Kotlin creates build.gradle with absent version (KT-11213)
#KT-11213 Fixed
2016-03-03 17:19:21 +03:00
Nikolay Krasko
b8ac6e27f5 Cache and postpone requests for plugin update status from UnsupportedAbiVersion notification 2016-03-03 17:19:21 +03:00
Nikolay Krasko
33b65ec692 Refactoring: remove updateHighlightingResult() method as all usages called it with false 2016-03-03 17:19:21 +03:00
Nikolay Krasko
d09139e53a Minor: add private modifiers 2016-03-03 17:19:21 +03:00
Nikolay Krasko
7e39c2321a Show the hint how to resolve incompatible ABI library problem (KT-11024) 2016-03-03 17:19:21 +03:00
Alexander Udalov
04eea69a82 Fix Java 8 codegen box tests 2016-03-03 17:08:47 +03:00
Alexey Tsvetkov
4aa171c1b3 Minor: wait for gradle daemon to stop in tests
KT-8487
2016-03-03 16:45:20 +03:00
Alexey Tsvetkov
2140c270d7 Minor: replace warning with an assert
KT-8487
2016-03-03 16:45:20 +03:00
Alexey Tsvetkov
6ab868ae33 Print file paths relative to project root in gradle incremental compilation logs
KT-8487
2016-03-03 16:45:20 +03:00
Alexey Tsvetkov
8a0bd9446b Minor: remove duplicated daemon stop in tests
KT-8487
2016-03-03 16:45:20 +03:00
Alexey Tsvetkov
6574f60730 Minor: ignore some incremental tests for gradle
KT-8487
2016-03-03 16:45:20 +03:00
Alexey Tsvetkov
ba386f031b Pass isPackage = false when processing class proto
KT-8487
2016-03-03 16:45:20 +03:00
Alexey Tsvetkov
eff972d613 Recompile files with errors next time
KT-8487
2016-03-03 16:45:19 +03:00
Alexey Tsvetkov
7dc35aa343 Always call after compile hook
KT-8487
2016-03-03 16:45:19 +03:00
Alexey Tsvetkov
402436f3eb Add dummy files to fix gradle incremental tests
Gradle won't call kotlin task if source directory is empty

KT-8487
2016-03-03 16:45:19 +03:00
Alexey Tsvetkov
be44db7bd3 Rebuild and compare output class files in gradle incremental tests
KT-8487
2016-03-03 16:45:19 +03:00
Alexey Tsvetkov
9e3284ff2a Make some functions private in classFileComparison.kt
KT-8487
2016-03-03 16:45:19 +03:00
Alexey Tsvetkov
7a7562d685 Build incremental testing utils to kotlin-build-common-test.jar
KT-8487
2016-03-03 16:45:19 +03:00
Alexey Tsvetkov
239e217d19 Move DebugXProtoBuf classes to build-common
KT-8487
2016-03-03 16:45:19 +03:00
Ilya Chernikov
42cbd940c3 simple test on dependent module recompilation
KT-8487
2016-03-03 16:45:18 +03:00
Ilya Chernikov
1f83745862 Fixing destination dir handling to avoid warning from kotlin compiler
KT-8487
2016-03-03 16:45:18 +03:00
Ilya Chernikov
b470bdda23 Class added to proguard - was missing in gradle plugin when incremental compilation is on
KT-8487
2016-03-03 16:45:18 +03:00
Alexey Tsvetkov
7e6c1c75f4 Remove classfile for modified files too
KT-8487
2016-03-03 16:45:18 +03:00
Alexey Tsvetkov
af0925056e Use fresh wrapper version
KT-8487
2016-03-03 16:45:18 +03:00
Alexey Tsvetkov
d730cff88a Add new gradle wrapper to tests
KT-8487
2016-03-03 16:45:18 +03:00
Alexey Tsvetkov
3b697e8693 Minor: simplify File.isKotlinFile utility function
KT-8487
2016-03-03 16:45:18 +03:00
Alexey Tsvetkov
f2cde80aaf Minor: remove unused functions
KT-8487
2016-03-03 16:45:17 +03:00
Alexey Tsvetkov
df157f9db3 Reuse incremental test modification utils from build-common
KT-8487
2016-03-03 16:45:17 +03:00
Alexey Tsvetkov
8df209b436 Move incremental test modification utils to build-common
KT-8487
2016-03-03 16:45:17 +03:00
Alexey Tsvetkov
f4aed97d52 Extract incremental test modification utils
KT-8487
2016-03-03 16:45:17 +03:00
Alexey Tsvetkov
62dce975b3 Fix case when there are only removed kotlin files
KT-8487
2016-03-03 16:45:17 +03:00
Alexey Tsvetkov
7856bd5d0a Add log parser tests
KT-8487
2016-03-03 16:45:17 +03:00
Alexey Tsvetkov
4f2f0f0a60 Remove dependency on kotlin-test in IC test
KT-8487
2016-03-03 16:45:17 +03:00
Alexey Tsvetkov
f3079a3b75 Add kotlin test to gradle incremental build tests dependencies
KT-8487
2016-03-03 16:45:16 +03:00
Alexey Tsvetkov
8e4c11a1e6 Allow using more memory for gradle tests
KT-8487
2016-03-03 16:45:16 +03:00
Alexey Tsvetkov
9fba1a9c71 Move gradle test settings to separate files
KT-8487
2016-03-03 16:45:16 +03:00
Alexey Tsvetkov
a5b28ac62a Recompile subclasses in gradle
KT-8487
2016-03-03 16:45:16 +03:00
Alexey Tsvetkov
1893a6e15b Remove getting lookups with generated classes fq-names
KT-8487
2016-03-03 16:45:16 +03:00
Alexey Tsvetkov
c955a399a3 Exclude from compilation only files that were compiled at last iteration
KT-8487
2016-03-03 16:45:16 +03:00
Alexey Tsvetkov
f93562299c Reuse code from build-common
KT-8487
2016-03-03 16:45:16 +03:00
Alexey Tsvetkov
a5e3ca3596 Minor: change formatting, add logging
KT-8487
2016-03-03 16:45:15 +03:00
Alexey Tsvetkov
a13cf73a5b Minor: put files to set
KT-8487
2016-03-03 16:45:15 +03:00
Alexey Tsvetkov
579b49c7f3 Compile using -module xml
KT-8487
2016-03-03 16:45:15 +03:00
Alexey Tsvetkov
5028184c2a Minor: remove commented code
KT-8487
2016-03-03 16:45:15 +03:00
Alexey Tsvetkov
fa86653ddd Minor: optimize imports
KT-8487
2016-03-03 16:45:15 +03:00
Ilya Chernikov
6b9c3e5eb6 placing incremental compilation under "experimentalIncremental" option
KT-8487
2016-03-03 16:45:15 +03:00
Ilya Chernikov
819735e073 Adding extended gradle incremental cache implementation with map from sources to classfiles and some exposed functionality from parent class, using it to clean classfiles and find dirty lookups from removed files, refactoring dirty lookup calculation
KT-8487
2016-03-03 16:45:15 +03:00
Ilya Chernikov
4be395dcee Implementing weak variant of testing for jps-based tests - test passes if gradle compiles at least all expected files, but if it compiles more - it is not a failure; using this variant for parametrized tests
KT-8487
2016-03-03 16:45:14 +03:00
Ilya Chernikov
ddf3ca276b Implementing workaround for not being able to set java task classpath statically and therefore making it unable to detect changes in kotlin classes
KT-8487
2016-03-03 16:45:14 +03:00
Ilya Chernikov
df63fc30f6 (temp) disabling copying on kotlin-build-sources.jar in attempt to run maven build on TC
KT-8487
2016-03-03 16:45:14 +03:00
Ilya Chernikov
4809e8755e Implementing daemon restart mechanism to prevent problems with low memory watcher (TODO: investigate!)
KT-8487
2016-03-03 16:45:14 +03:00
Ilya Chernikov
c6fe18fbe0 Adding runtime dependency to incremental tests's build.gradle, fixes some tests from jps
KT-8487
2016-03-03 16:45:14 +03:00
Ilya Chernikov
a1ddbb3fe5 skipping tests that using "touch" modification, since gradle do not consider mere timestamp touching as a change and do not call kotlin plugin on it
KT-8487
2016-03-03 16:45:14 +03:00
Ilya Chernikov
c5617f1274 Adding automated parametrized tests for all jps-plugin tests
KT-8487
2016-03-03 16:45:14 +03:00
Ilya Chernikov
7b54751092 Implementing test infrastructure for chcking incremental builds and for importing and executing jps-lugin tests, adding several tests manually
KT-8487
2016-03-03 16:45:14 +03:00
Ilya Chernikov
cde89cb1e8 Implementing support for running gradle tests with daemon
KT-8487
2016-03-03 16:45:13 +03:00
Ilya Chernikov
9498235407 Adding cashes versios handling, refactoring sources to compile computing, minor output refactorings
KT-8487
2016-03-03 16:45:13 +03:00
Ilya Chernikov
db3b6ff10b Switching gradle plugin to incremental compilation based on build lib
KT-8487
2016-03-03 16:45:13 +03:00
Ilya Chernikov
d3d854ec7d Preparing build lib for migrating gradle plugin on it: moving ArgumentUtils from jps plugin, adding buildUtils with incremental compilation functions extracted from kotlinBuilder, minor tweak to lookup storage dump
KT-8487
2016-03-03 16:45:13 +03:00
Ilya Chernikov
6789f2ff0f adding build lib to maven part, adding it's contents to kotlin-compiler-embeddable
KT-8487
2016-03-03 16:45:13 +03:00
Ilya Chernikov
ebae665b78 Adding missing keep statement to proguard config
KT-8487
2016-03-03 16:45:13 +03:00
Ilya Chernikov
d4a86b7f6d Generate proper sources jar for compiler-embeddable, fixing problem with locating embeddable compiler jar in tests, revealed by the change
KT-8487
2016-03-03 16:45:12 +03:00
Ilya Chernikov
66f1f87757 Additional check of analyze resul, prevents a problem of passing BindingContext.EMPTY to the generation stage, fixes kapt tests in gradle plugins
KT-8487
2016-03-03 16:45:12 +03:00
Alexander Udalov
daab3db062 Add WITH_RUNTIME and WITH_REFLECT directives to box tests
Currently all tests in boxWithStdlib/ run with both runtime and reflection
included; eventually they'll be merged into box/ using these directives
2016-03-03 16:11:21 +03:00
Alexander Udalov
f47cc5ce2f Fix runtime dependency in codegen/box tests, delete old doTestWithStdlib logic
Codegen tests in "compiler/testData/codegen/box" started to run with
ConfigurationKind.ALL accidentally in 933be1e. This commit fixes it
2016-03-03 16:08:18 +03:00
Alexander Udalov
5488972b53 Minor, don't create empty tmpdir in codegen tests w/o Java 2016-03-03 16:08:18 +03:00
Alexander Udalov
d011fa8dc6 Add FULL_JDK to tests in codegen/boxWithStdlib/fullJdk/
Drop the old scheme which relied on the directory name
2016-03-03 16:08:18 +03:00
Alexander Udalov
dc085c45b7 Improve exception on creating KClass for classes which are not classes in Kotlin 2016-03-03 16:08:18 +03:00
Alexander Udalov
4553afbd0c Make PropertyAccessorDescriptor#hasBody a front-end utility 2016-03-03 16:08:18 +03:00
Alexander Udalov
ae14d185eb Support setters for Java-method-based properties in reflection
Also heuristically support the corner case of multiple properties with the same
name and signature in a Java class, see the comment in
KDeclarationContainerImpl

 #KT-11258 Fixed
2016-03-03 16:08:18 +03:00
Alexander Udalov
14b1a3a048 Don't fail on requesting members of Java collection classes
RuntimeTypeMapper assumed that JavaPropertyDescriptor was necessarily backed by
JavaField, which has changed when we started to load Java method (or a pair of
methods) overriding a Kotlin property as a property, not as a method. Another
example of this situation is special built-in properties which are mapped to
Java methods, e.g. java.util.Collection#size() <-> kotlin.Collection#size. This
change adds support for the case of a property backed by a JavaMethod.

Note that callable references or usage of any reflection API related to
built-in members is not supported anyway and will currently fail with errors

 #KT-11258 Fixed
2016-03-03 16:08:18 +03:00
Alexander Udalov
6429dd4b04 Preserve JavaPropertyDescriptor type in substitution/copy
JavaPropertyDescriptor.substitute should return JavaPropertyDescriptor,
similarly to what's happening in JavaMethodDescriptor
2016-03-03 16:08:18 +03:00
Alexander Udalov
371051b1d6 Filter out package members from other facades in KPackageImpl
#KT-10690 Fixed
2016-03-03 16:08:18 +03:00
Alexander Udalov
1c0bbcd72b Fix KProperty.javaField for fake overrides
#KT-8131 Fixed
2016-03-03 16:08:18 +03:00
Michael Bogdanov
534a3a11d6 Write additional type parameters for DefaultImpls methods, fix for KT-11121: BadClassFile exception for interface implemented generic properties
#KT-11121 Fixed
2016-03-03 16:11:31 +03:00
Valentin Kipyatkov
5aca50b4ca Enhanced constructor descriptor should not loose its source!
#KT-11256 Fixed
2016-03-02 21:43:43 +03:00
Valentin Kipyatkov
508e1937d6 More diagnostic for EA-75975 2016-03-02 21:43:42 +03:00
Valentin Kipyatkov
135ec78d7d Fixed EA-70945 2016-03-02 21:43:42 +03:00
Alexander Udalov
65662d7c99 Remove incorrect test, to be reconsidered in the future
Before 3ca4097, 'set' signature was not checked at all in this case

 #KT-11272 Open
2016-03-02 20:44:23 +03:00
Dmitry Jemerov
386f22480f don't crash on startup in case of corrupted plugin installation
#KT-11230 Fixed
2016-03-02 18:17:36 +01:00
Alexander Udalov
e849792712 Minor, add KCallableImpl#container 2016-03-02 19:01:10 +03:00
Alexander Udalov
4779e3e9cf Drop traces of old annotations from kotlin.jvm.internal 2016-03-02 19:01:04 +03:00
Alexander Udalov
c93517bc2f Minor, fix test data 2016-03-02 19:00:50 +03:00
Dmitry Jemerov
661c87e464 minor: rename "jet" to "kotlin" in a couple of variable names 2016-03-02 16:47:43 +01:00
Stanislav Erokhin
5141d95a88 Refactoring. Remove dependence intellij-core from resolution module 2016-03-02 18:07:41 +03:00
Stanislav Erokhin
9338aa5633 Refactoring. Copy SmartList from IDEA to util.runtime module. 2016-03-02 18:07:40 +03:00
Alexander Udalov
8e77e16bbd Remove leftovers of platformName and platformStatic in test data
Drop unnecessary imports, rename some tests
2016-03-02 16:47:04 +03:00
Alexander Udalov
beb11e7ac1 Minor, don't create unnecessary class loader in OuterClassGenTest
Read the bytes from the file instead
2016-03-02 15:47:40 +03:00
Alexander Udalov
f1bb31d0a9 Minor, inline one overload of CodegenTestUtil.compileJava 2016-03-02 15:47:40 +03:00
Alexander Udalov
933be1e035 Drop single-file mode of black box codegen tests
Add regression test for #KT-5190
2016-03-02 15:47:39 +03:00
Alexander Udalov
2de7f38427 Migrate boxWithJava tests to multi-file framework 2016-03-02 15:47:38 +03:00
Alexander Udalov
0801ae5364 Minor, delete weird intermediate git files 2016-03-02 15:47:38 +03:00
Alexander Udalov
e7371d2c1a Minor, move boxAgainstJava logic to a separate test class 2016-03-02 15:47:37 +03:00
Alexander Udalov
280ad195ee Migrate boxAgainstJava tests to multi-file framework 2016-03-02 15:47:36 +03:00
Alexander Udalov
26de87d792 Minor, make CodegenTestUtil.compileJava take absolute paths of files 2016-03-02 15:47:36 +03:00
Alexander Udalov
12cf70ac38 Delete legacy codegen tests with Java on annotations
After cleanup, these tests are now duplicated with those in
boxAgainstJava/annotations/
2016-03-02 15:47:35 +03:00
Alexander Udalov
9f67fe2fe3 Adapt CompileKotlinAgainstKotlin test to black box format
Rename/remove some obsolete test cases
2016-03-02 15:47:35 +03:00
Alexander Udalov
0b26e749f6 Improve multi-file test framework in CodegenTestCase
Instead of inheriting from KotlinMultiFileTestWithJava, invoke
KotlinTestUtils.createTestFiles directly. This helps to avoid constructing
unnecessary environment (createEnvironment() was called in setUp, but codegen
tests ignored the created environment because it's not possible to do
generically in codegen tests; the environment kind depends on the source file
usually)
2016-03-02 15:44:28 +03:00
Alexander Udalov
4b96a8131b Inline KotlinLiteFixture 2016-03-02 15:44:28 +03:00
Alexander Udalov
12b6a4ede4 Obsolete KotlinLiteFixture, move utilities to CheckerTestUtilTest 2016-03-02 15:44:28 +03:00
Alexander Udalov
647e188a08 Migrate bytecode text tests to multi-file framework
Get rid of BytecodeTextMultifileTestGenerated
2016-03-02 15:44:28 +03:00
Dmitry Jemerov
fbc2fe74ad Merge pull request #826 from cypressious/catch_fixer
Implement smart enter processors for try, catch (parameters and body) and finally
2016-03-02 13:21:32 +01:00
Dmitry Petrov
9244ef9b81 Do not use 'dup' for postfix increment/decrement: can't do it with collection element in general.
KT-11190, KT-11191, KT-11192, KT-11200, KT-11206
2016-03-02 14:28:06 +03:00
Dmitry Petrov
3ca4097bcc KT-11203: report errors on read-write operations for elements of collections with inconsistent get&set signatures 2016-03-02 14:28:06 +03:00
Mikhail Glukhikh
cd91e44451 Minor fix: intention description directory renamed 2016-03-02 14:13:02 +03:00
Denis Zharkov
eb2c584578 Rename JetTypeMapper 2016-03-02 13:38:46 +03:00
Denis Zharkov
56a2561ab9 Extract JvmMethodGenericSignature from JvmMethodSignature 2016-03-02 13:38:46 +03:00
Denis Zharkov
7bd8fa0b48 Optimize signature propagation
Do not collect super function with trivial signature
2016-03-02 13:38:46 +03:00
Denis Zharkov
d66b9a08dd Do not map generic signature if it's unnecessary 2016-03-02 13:38:46 +03:00
Denis Zharkov
5690d58fd0 Memoize package views in module 2016-03-02 13:38:46 +03:00
Denis Zharkov
4583283515 Search classes by JavaClass through package scope 2016-03-02 13:38:46 +03:00
Denis Zharkov
26ebf46e3e Do not read module mappings more than once 2016-03-02 13:38:46 +03:00
Denis Zharkov
3652cd9c18 Optimize top level class searching in LazyJavaPackageScope
Do not try to search something, that is known not to exist
2016-03-02 13:38:46 +03:00
Denis Zharkov
beb24af5ef Devirtualize calls to PackageFragmentDescriptorImpl.fqName
1. Replace INVOKEINTERFACE with INVOKEVIRTUAL
2. Make callee function final

It helps to decrease one module compilation time by 1-2 seconds
2016-03-02 13:38:46 +03:00
Dmitry Jemerov
3cc3b3fce2 cleanup: remove dead code from ProjectStructureUtil, move code used only during project configuration to ConfigureKotlinInProjectUtils; move function from KotlinRuntimeLibraryCoreUtil into KotlinRuntimeLibraryUtil 2016-03-02 11:15:06 +01:00
Dmitry Jemerov
828e53ce82 reuse Gradle external system ID 2016-03-02 11:15:05 +01:00
Dmitry Jemerov
13f4053950 detect Kotlin source roots
#KT-8592 Fixed
2016-03-02 11:15:03 +01:00
Dmitry Jemerov
8f2dd2c821 better presentation for the list of modules with Kotlin files
#KT-9025 Fixed
2016-03-02 11:15:02 +01:00
Dmitry Jemerov
d994e442da support new IDEA API to allow configuring a Java/JS runtime without prompting the user 2016-03-02 11:15:01 +01:00
Dmitry Jemerov
4ea05354c7 move the calculation of configure kotlin notification out of EDT
#KT-10541 Fixed
2016-03-02 11:15:00 +01:00
Dmitry Jemerov
1976e5f3b0 ConfigureKotlinNotification: J2K and cleanup 2016-03-02 11:14:59 +01:00
Dmitry Jemerov
a6716d9160 ConfigureKotlinNotification: rename to .kt 2016-03-02 11:14:58 +01:00
Dmitry Jemerov
207c5e188b correctly detect Gradle modules (previous code, besides being crazy overcomplicated, didn't always work because module.getModuleFile() returns null immediately after a project has been imported from Gradle and before it has been saved) 2016-03-02 11:14:56 +01:00
Dmitry Jemerov
edcd469e44 API for configuring Kotlin without notification
#KT-11089 Fixed
2016-03-02 11:14:54 +01:00
Dmitry Jemerov
28406bb1fb update URL for Gradle documentation 2016-03-02 11:14:53 +01:00
Dmitry Jemerov
c081a0c758 don't show pre-1.0 versions of Kotlin in "Configure Kotlin in project" action 2016-03-02 11:14:51 +01:00
Alexey Andreev
550c8b12d1 KT-10667 Fix building qualified references to nested type of built-ins, e.g. Map.Entry 2016-03-02 10:31:05 +03:00
Mikhail Glukhikh
96a7febd09 Smart cast is performed now inside 'x as? Type ?: return' safe as / elvis combination #KT-10992 Fixed 2016-03-02 10:07:33 +03:00
Mikhail Glukhikh
c7f3a31517 Create subclass intention implemented #KT-8473 Fixed
Can be used for implementing interfaces / abstract classes / sealed classes or extending open classes
2016-03-02 10:05:27 +03:00
Mikhail Glukhikh
7fa9ca8e9f Minor: potential NPE fix 2016-03-02 10:05:23 +03:00
Nikolay Krasko
247185735a Refactoring: rename file 2016-03-01 16:04:06 +03:00
Nikolay Krasko
59e2449d4e Refactoring: extract methods from JSLibraryStdPresentationProvider 2016-03-01 16:04:05 +03:00
Nikolay Krasko
a21a6c9906 Refactoring: extract methods from JavaRuntimePresentationProvider 2016-03-01 16:04:03 +03:00
Nikolay Krasko
0594abbad6 J2K: LibraryPresentationProviderUtil convert 2016-03-01 16:04:02 +03:00
Nikolay Krasko
6349285b06 J2K: LibraryPresentationProviderUtil rename 2016-03-01 16:03:56 +03:00
Nikolay Krasko
97837e6315 Don't detect libraries in maven, gradle and ide systems as runtime libraries
#KT-11072 Fixed
 #KT-10918 Fixed
2016-03-01 15:55:16 +03:00
Nikolay Krasko
b70d0f8c28 Minor: drop deprecated methods and remove warnings in library presentation providers 2016-03-01 15:55:16 +03:00
Nikolay Krasko
d07d34af93 Configure Kotlin in Project: "All modules containing Kotlin files" lists modules even not containing those files (KT-10831)
#KT-10831 Fixed
2016-03-01 15:55:16 +03:00
Ilya Gorbunov
0cd0554078 JS: Remove unsupported Enumeration declaration.
Relates to #KT-7480
2016-03-01 14:01:39 +03:00
Ilya Gorbunov
e5dbb65ff7 JS: Remove declarations of unsupported SortedSet and TreeSet, make toSortedSet() jvm-only.
Fix completion test.

Relates to #KT-7480
2016-03-01 14:01:38 +03:00
Dmitry Petrov
eb7cf92fbd Minor. Add a test for KT-10732: no redeclaration for
fun <T> List<T>?.foo()
fun <T> List<T>.foo()
2016-03-01 13:54:03 +03:00
Michael Bogdanov
16afe74dc1 Fix for KT-11117: Android Kotlin DEX transformation error when I use arrayOf as an anonymous object property
#KT-11117 Fixed
2016-02-29 12:53:58 +03:00
Kirill Rakhman
ed152bccfa Implement smart enter processors for try, catch (parameters and body) and finally with tests
Fixes #KT-10013
2016-02-28 14:31:59 +01:00
Alexander Udalov
2d5b7a8768 Minor, move CompileKotlinAgainstKotlin tests to codegen/ 2016-02-27 16:31:46 +03:00
Alexander Udalov
c4b4a23cb1 Minor, move abstract codegen tests out of 'generated'
Delete unused AbstractBlackBoxCodegenJava8Test
2016-02-27 16:22:25 +03:00
Alexander Udalov
ea522fe606 Minor, rename AbstractSMAPBaseTest -> SMAPTestUtil
Remove unnecessary inheritance
2016-02-27 16:09:27 +03:00
Alexander Udalov
c72f29b13a Move KotlinTestWithEnvironment to org.jetbrains.kotlin.test
It's not really related to lazy-resolve and should be also probably located
near KotlinTestWithEnvironmentManagement
2016-02-27 15:40:07 +03:00
Alexander Udalov
25cebe03e9 Fix inline codegen tests after regroup and rename 2016-02-27 15:40:06 +03:00
Alexander Udalov
f7958edf21 Improve test data format for SMAP codegen tests
Instead of comments in a Kotlin source file, add a .smap with the contents of
the source mapping data (and possible comments)
2016-02-27 15:40:06 +03:00
Alexander Udalov
cc84aabdcf Migrate boxInline tests to new multi-file framework 2016-02-27 15:40:05 +03:00
Alexander Udalov
fa1f7d988e Get rid of CompileKotlinAgainstMultifileKotlinTestGenerated and boxMultifileClasses/
Merge tests in boxMultifileClasses/calls to one test case; copy the two
resulting tests (+ change box to main) to compileKotlinAgainstKotlin
2016-02-27 15:40:05 +03:00
Alexander Udalov
cc8af573f9 Migrate CompileKotlinAgainstKotlin test to multi-file framework 2016-02-27 15:40:04 +03:00
Alexander Udalov
5884d4be79 Get rid of code duplication in kt-against-kt tests 2016-02-27 15:40:03 +03:00
Alexander Udalov
e0b6f12737 Migrate boxMultiFile and boxMultifileClass tests to new multi-file tests
AbstractCompileKotlinAgainstMultifileKotlinTest is broken in this commit; will
be fixed later
2016-02-27 15:40:03 +03:00
Alexander Udalov
4fb0453cea Introduce multi-file test framework to codegen tests
Currently still only single-file tests are supported; this will be fixed in
subsequent commits
2016-02-27 15:40:01 +03:00
Alexander Udalov
adea547d8a Inline KotlinLiteFixture#loadFile, refactor surroundings 2016-02-27 15:40:00 +03:00
Alexander Udalov
1be6046fc2 Minor refactorings in legacy codegen tests
Use loadFile() + getPrefix() instead of loadFile(String)
2016-02-27 15:40:00 +03:00
Alexander Udalov
5f7bc601a8 Refactor/simplify KotlinMultiFileTestWithJava and subclasses 2016-02-27 15:39:59 +03:00
Ilya Gorbunov
06af22b2c1 JS: Remove LinkedList declaration since the implementation is missing.
#KT-7480 Fixed
2016-02-27 02:49:05 +03:00
Ilya Gorbunov
f9e97882fc Minor: remove obsolete TODO. 2016-02-27 00:52:31 +03:00
Ilya Gorbunov
19fa2f51ea Review and correct exception messages. 2016-02-27 00:52:30 +03:00
Ilya Gorbunov
00e30e417f Cleanup: suppress warnings where appropriate. 2016-02-26 21:54:57 +03:00
Ilya Gorbunov
f025a3b8c4 Cleanup: rename parameters to match overriden method (in private implementations).
Remove some redundancy.
2016-02-26 21:54:55 +03:00
Kirill Rakhman
19130cdd71 Clean up KotlinMissingIfBranchFixer 2016-02-26 18:52:07 +01:00
Ilya Gorbunov
b19c0363fd Clarify parameter order of lambda function parameter of *Indexed functions.
#KT-10953 Fixed
2016-02-26 20:47:26 +03:00
Ilya Gorbunov
0e0455daeb Improve the documentation of binarySearch functions.
#KT-10198 Fixed
2016-02-26 20:31:05 +03:00
Dmitry Jemerov
103f8300fb don't show "Change type arguments" fix when there's nothing to change
#KT-11178 Fixed
2016-02-26 16:11:24 +01:00
Pavel V. Talanov
a4c005fefd Update existing test data depending on diagnostic parameter rendering 2016-02-26 14:45:11 +03:00
Pavel V. Talanov
5304ddfca3 DelegatedPropertyResolver: Use SHORT_NAMES_IN_TYPES for ad-hoc diagnostics parameter rendering 2016-02-26 14:45:11 +03:00
Pavel V. Talanov
48094db9dc DefaultErrorMessages: remove hardcoced fq names for built-in types 2016-02-26 14:45:10 +03:00
Pavel V. Talanov
e397544aee Improve NONE_APPLICABLE ide renderer 2016-02-26 14:45:10 +03:00
Pavel V. Talanov
8cbc9eee3e Improve AMBIGUOUS_CALLS renderer 2016-02-26 14:45:09 +03:00
Pavel V. Talanov
b399bbffd7 Improve JvmConflictingDeclarations diagnostics rendering 2016-02-26 14:45:08 +03:00
Pavel V. Talanov
d0b27a5fe2 Update test data for diagnostics test 2016-02-26 14:45:07 +03:00
Pavel V. Talanov
5dcfdb3996 Test return type mismatch on override diagnostic rendering 2016-02-26 14:45:07 +03:00
Pavel V. Talanov
7ba4adf006 Add tests for diagnostics rendering 2016-02-26 14:45:06 +03:00
Pavel V. Talanov
4ab5aabfa0 Adjust existing test data for diagnostic messages 2016-02-26 14:45:06 +03:00
Pavel V. Talanov
e4cf090720 Adjust diagnostics rendering so that short classifier names are rendered unless the name is ambiguous in corresponding RenderingContext 2016-02-26 14:45:05 +03:00
Pavel V. Talanov
c7cb596f74 Rename: NameShortness -> ClassifierNamePolicy 2016-02-26 14:45:05 +03:00
Pavel V. Talanov
ced5a6c917 Introduce RenderingContext and add as parameter to DiagnosticParameterRenderer#render
RenderingContext holds data about the whole diagnostics allowing to adjust rendering of its parameters
2016-02-26 14:45:04 +03:00
Pavel V. Talanov
4f18b3da53 Rename: Renderer -> DiagnosticParameterRenderer and move it out of descriptors module
DescriptorRenderer is no longer a renderer
DescriptorRenderers should not be used to render diagnostic parameters explicitly
2016-02-26 14:45:02 +03:00
Pavel V. Talanov
41f5b5e8b1 Minor: expose DescriptorRender#renderMessage 2016-02-26 14:45:01 +03:00
Pavel V. Talanov
a3bab638eb Move MultiRenderer to a more suitable package 2016-02-26 14:45:00 +03:00
Pavel V. Talanov
40d538731b Move NameShortness to a separate file and refactor it to be an interface 2016-02-26 14:45:00 +03:00
Pavel V. Talanov
77f74a929a Revert 06215ca932
It led to parameter names missing in parameter info and completion for compiled java code used from kotlin
See KT-11039
2016-02-26 14:05:47 +03:00
Natalia Ukhorskaya
7b1afa1e01 Rearrange Colors page for Kotlin 2016-02-26 12:34:24 +03:00
Natalia Ukhorskaya
e0cb0eb1de Highlight super and this as keywords 2016-02-26 12:34:24 +03:00
Natalia Ukhorskaya
d361aca0fb Change some colors in Darcula after refactoring of colors in IDEA 2016-02-26 12:34:24 +03:00
Alexander Udalov
63db41a712 Minor, refactor BuiltInDefinitionFile.read to get rid of isInternalBuiltInFile 2016-02-26 11:29:10 +03:00
Alexander Udalov
5f39f628c9 Fix and test built-ins decompiler for incompatible version 2016-02-26 11:29:10 +03:00
Alexander Udalov
440b23ddf6 Minor, extract createIncompatibleAbiVersionDecompiledText to common/ 2016-02-26 11:29:10 +03:00
Alexander Udalov
f82ec6711d Remove SerializedResourcePaths and BuiltInsSerializedResourcePaths
Most of members now only make sense for JS, move the rest to
BuiltInSerializerProtocol
2016-02-26 11:29:10 +03:00
Alexander Udalov
4bacabe354 Don't read old built-in files in decompiler 2016-02-26 11:29:10 +03:00
Alexander Udalov
996c5848c2 Simplify deserialization components for built-ins and JS 2016-02-26 11:29:10 +03:00
Alexander Udalov
f130755972 Use new built-in binary format (.kotlin_builtins files) in IDE
Instead of .kotlin_class and .kotlin_package files, .kotlin_builtins files are
now supported: they are decompiled to a long file consisting of all non-real
classes (those which do not also have .class files) and members in the
corresponding package.

Unlike the old files, .kotlin_builtins files have a binary version in the
beginning, which allows us to skip decompilation and stub building in case the
file has an unsupported version. This could previously lead to exceptions, see
KT-11077, EA-79339.

The change in DecompiledTextFactory is needed because without "defined in ..."
the keys for members in the long decompiled file are not unique, as there are
multiple members with exactly the same signatures in different classes (e.g.
arithmetic operations in primitive classes).

Remove testData files with the decompiled text and stubs of built-in symbols
because now that the whole package is decompiled to a single file, it would be
painful to update these files each time something in built-in sources changes

 #KT-11077 Fixed
2016-02-26 11:29:10 +03:00
Alexander Udalov
cb490dbe4f Minor, add BuiltInsBinaryVersion.readFrom(InputStream) 2016-02-26 11:29:10 +03:00
Alexander Udalov
c81d76414f Drop serialization of old binary built-in files (.kotlin_class, .kotlin_package) 2016-02-26 11:29:10 +03:00
Ilya Chernikov
c39cec4869 Fixing daemon memory test on windows by increasing the expected threshold 2016-02-26 10:23:37 +03:00
Ilya Gorbunov
029b918ec9 Another CharSequence.repeat implementation in JS from polyfill of String.repeat.
#KT-3064
2016-02-26 01:26:05 +03:00
Ilya Gorbunov
f564adfdd4 Optimize trivial cases of CharSequence.repeat. Provide CharSequence.repeat for JS.
#KT-3064 Fixed
2016-02-26 01:23:30 +03:00
Stanislav Erokhin
7a43d62408 Move sources to resolution module 2016-02-26 00:39:37 +03:00
Stanislav Erokhin
5bb1f3b2ea Create resolution module. 2016-02-26 00:39:37 +03:00
Stanislav Erokhin
310c68f633 Removed lock level WRITING from LexicalWritableScope. 2016-02-26 00:39:36 +03:00
Stanislav Erokhin
f85abed6e6 Replace RedeclarationHandler by LocalRedeclarationChecker 2016-02-26 00:39:35 +03:00
Ilya Gorbunov
7d32fad063 Improve docs for trimIndent/trimMargin.
#KT-9786
2016-02-25 22:09:15 +03:00
Ilya Gorbunov
77f148bec6 Improve docs for substring/subsequence. 2016-02-25 22:09:14 +03:00
Ilya Gorbunov
c946d283ff Fix example for Throws annotations.
Improve code escaping and wording for JvmSuppressWildcards.
2016-02-25 22:09:14 +03:00
Ilya Gorbunov
a100ffd66b Minor: improve wording in the deprecation message. 2016-02-25 21:16:45 +03:00
Alexander Udalov
71170d32cb Exclude kotlin.reflect.jvm.internal.impl from import and completion in project 2016-02-25 20:30:00 +03:00
Nikolay Krasko
edb684fee0 Print kotlin compiler version in build script where withKotlin tag is used 2016-02-25 18:49:53 +03:00
Michael Bogdanov
1b94904684 Prohibited @Strictfp annotation on classes (it's not supported yet), Fix for KT-11109: Strictfp annotation do nothing when applied to class
#KT-11109 Fixed
2016-02-25 18:07:51 +03:00
Natalia Ukhorskaya
894c11d412 Merge pull request #820 from JakeWharton/jw/extra-source-folders
Include source folders from registered source-generating tasks.
2016-02-25 12:07:20 +03:00
Denis Zharkov
fe7393dc1a Fix testData 2016-02-25 11:15:18 +03:00
Denis Zharkov
4c88e2a0bc Use original descriptor when mapping fake override
Otherwise wrong CONFLICTING_INHERITED_JVM_DECLARATIONS were reported

 #KT-10691 Fixed
2016-02-25 11:10:48 +03:00
Michael Bogdanov
582b1c5e66 Fix for KT-11163: Incorrect codegen in case of custom compareTo on primitives
#KT-11163 Fixed
2016-02-25 10:16:09 +03:00
Denis Zharkov
36e84ff23a Minor. Add tests for obsolete issues
#KT-8900 Obsolete
 #KT-8901 Obsolete
2016-02-25 08:31:58 +03:00
Denis Zharkov
914447b7eb Do not treat uninitialized value as a reason to retain boxing
See testData/simpleUnitializedMerge.kt
On exit from `if` we merge value in variable with slot 1 (x):
- from `if` body we get BoxedBasicValue
- from outer block we get UNITIALIZED_VALUE

So we just suppose `x` is unitialized after `if`
and there's no need to mark BoxedValue as unsafe to remove
because it's anyway can't be used after `if`

 #KT-6842 Fixed
2016-02-25 08:31:19 +03:00
Denis Zharkov
2f4b8dab25 Minor. Replace 'filter' with 'any' 2016-02-25 08:31:19 +03:00
Stanislav Erokhin
226e690a86 Minor. refactoring in Qualifier. 2016-02-24 19:33:10 +03:00
Stanislav Erokhin
f130de2468 Remove scope from Qualifier 2016-02-24 19:33:10 +03:00
Stanislav Erokhin
4b3c6d52ef Remake QualifierReceiver 2016-02-24 19:33:09 +03:00
Stanislav Erokhin
8c5339cccf Minor. Remove class ClassifierQualifier and create special ClassValueReceiver 2016-02-24 19:33:09 +03:00
Stanislav Erokhin
2f0ae6f176 Minor. Remove name from Qualifier. 2016-02-24 19:33:08 +03:00
Stanislav Erokhin
5240233eda Minor. Remove HIDDEN_ANNOTATION_FQ_NAME. 2016-02-24 19:33:08 +03:00
Stanislav Erokhin
6a1664c1b3 Minor. removed explicitExtensionReceiverForInvoke from CallCandidateResolutionContext. 2016-02-24 19:33:07 +03:00
Stanislav Erokhin
1ef4a958fd Minor. removed call checked from ResolutionContext. 2016-02-24 19:33:07 +03:00
Stanislav Erokhin
6591f8a2ab Minor. removed unused method from AdditionalTypeChecker. 2016-02-24 19:33:06 +03:00
Stanislav Erokhin
24829ee3ac Minor. rename 2016-02-24 19:33:06 +03:00
Stanislav Erokhin
665e13e4ec Remove obsolete code about warnings for expressions which can be null in java(has @Nullable annotation in java) and in kotlin not marked nullable.
After introducing flexible types and signature enhancement there is no more such expressions.
2016-02-24 19:33:05 +03:00
Michael Bogdanov
b20f49a2c4 Default body compilation for inline fun extracted from InlineCodegen to separate one 2016-02-24 14:06:29 +03:00
Michael Bogdanov
f149f16882 Separately process inline function default impl body compilation (non general inline magic),
Fix for KT-10670 Debugger: Evaluate Expression/Watches fail for inline function parameter initialized with default value

 #KT-10670 Fixed
2016-02-24 14:06:29 +03:00
Michael Bogdanov
7bfb5a0c60 InliningInstructionAdapter refactoring: renamed to MethodBodyVisitor, added additional empty owerrides 2016-02-24 14:06:28 +03:00
Dmitry Jemerov
54de48604d Merge pull request #824 from cypressious/setter_smart_enter
Implement Smart Enter for Property Setters #KT-9996
2016-02-24 11:27:39 +01:00
Kirill Rakhman
f3e68fdeaa Implement smart enter processors for property setter with tests
Fixes #KT-9996
2016-02-23 17:01:02 +01:00
Kirill Rakhman
c1a2570dd4 replace null checks with elvis operator 2016-02-23 16:35:12 +01:00
Alexander Udalov
c71c344b8a Fix NCDFE on primitive iterators during boxing optimization
The real fix is in ProgressionIteratorBasicValue's constructor, other changes
are refactorings

 #KT-11153 Fixed
2016-02-22 19:49:39 +03:00
Ilya Gorbunov
3c35395cf7 Minor: refactor some tests to use nested classes. 2016-02-21 04:18:11 +03:00
Ilya Gorbunov
7997aea5c3 Make Destructured nested class of MatchResult interface in JS too. 2016-02-21 04:18:09 +03:00
Ilya Gorbunov
acc6cc539a Mark CollectionAssertions as deprecated due to their experimental status. 2016-02-21 03:33:12 +03:00
Ilya Gorbunov
bf536afe5f Mark reified assertFailsWith with InlineOnly to preserve stack traces. 2016-02-21 03:20:07 +03:00
Ilya Gorbunov
119eceb80b Minor: correct file name 2016-02-21 03:20:05 +03:00
Alexander Udalov
c0a0a8afd7 Revert "Minor, pass -Xmx256m to compiler in CompilerSmokeTestBase"
This reverts commit 61f5e2f9cf.

Causes OOM on TeamCity
2016-02-20 22:21:58 +03:00
Zalim Bashorov
82a049b319 JS: fix definition nested classes inside interfaces 2016-02-20 21:20:42 +03:00
Alexey Andreev
718c15806c KT-10785 Ensure that access to private properties from inside memeber functions of objects is performed via 'this' rather that by FQN. 2016-02-20 19:16:26 +03:00
Alexey Andreev
0a2cff9056 KT-10785 Fixed. Change predicate that decides whether to dereference assignment target as a property accessor or as a backing field. 2016-02-20 19:16:26 +03:00
Alexander Udalov
dbde566b66 Minor, fix typo in test class name 2016-02-20 19:05:40 +03:00
Alexander Udalov
1a5a077bd6 Replace map + filterNotNull -> mapNotNull in project 2016-02-20 19:05:30 +03:00
Alexander Udalov
61f5e2f9cf Minor, pass -Xmx256m to compiler in CompilerSmokeTestBase
This fixes CompilerFileLimitTest when running locally
2016-02-20 19:05:23 +03:00
Alexey Andreev
a4db14eff5 [KT-4124] Add tests for qualified labeled super access to functions and properties 2016-02-20 15:19:31 +03:00
Alexey Andreev
d83f926658 [KT-4124] Refactor super calls and fix calls to Any::equals 2016-02-20 15:19:31 +03:00
Alexey Andreev
6adcafafbb [KT-4124] Minor refactoring and cleanup 2016-02-20 15:19:30 +03:00
Alexey Andreev
d067068774 [KT-4124] Support invocation of constructor of inner class from extension method 2016-02-20 15:19:30 +03:00
Alexey Andreev
9238afc439 [KT-4124] Fix some tests from common testData 2016-02-20 15:19:29 +03:00
Alexey Andreev
f5786dd567 [KT-4124] Add test case for nested/inner classes inside native class. Add diagnostic of inner classes inside native classes. 2016-02-20 15:19:28 +03:00
Alexey Andreev
040a646174 [KT-4124] Add test case for nested native class 2016-02-20 15:19:28 +03:00
Alexey Andreev
68828317b8 [KT-4124] Suppress error reporting about native local classes 2016-02-20 15:19:27 +03:00
Alexey Andreev
e3c7cd0021 [KT-4124] Add diagnostic that reports of local classes. Remove test for diagnostic of nested types 2016-02-20 15:19:27 +03:00
Alexey Andreev
8537d327fa [KT-4124] Add diagnostic of a several cases of local classes like class in object in function. 2016-02-20 15:19:26 +03:00
Alexey Andreev
c705fafc95 [KT-4124] Add support for super<T>@Outer.functionName() case 2016-02-20 15:19:25 +03:00
Alexey Andreev
9e0e734021 [KT-4124] Add support for super<T>@Outer.propertyName case 2016-02-20 15:19:25 +03:00
Alexey Andreev
20b3361edc [KT-4124] Fix test compatibility between JS and Java backed for several tests 2016-02-20 15:19:24 +03:00
Alexey Andreev
c231ecfe50 [KT-4124] Fix the following: when test can't be compiled, sometimes JUnit reported that .js file was not found instead of reporting actual errors. 2016-02-20 15:19:24 +03:00
Alexey Andreev
3f5be335a9 [KT-4124] Fix bug when constructing like this: "A.Companion.B()" 2016-02-20 15:19:23 +03:00
Alexey Andreev
700159987b [KT-4124] Fix bug when inner A.B extends inner A.C not passing outer reference there 2016-02-20 15:19:23 +03:00
Alexey Andreev
8f74720973 [KT-4124] Add more generated tests from Java backend. Fix support of deeply nested classes (i.e. A.B.C) and nested enums. 2016-02-20 15:19:22 +03:00
Alexey Andreev
c48c6bc055 [KT-4124] Use generated test to avoid duplication of test data of inner classes. Add support of classes contained within objects. 2016-02-20 15:19:22 +03:00
Alexey Andreev
133b84160e [KT-4124] Fix case of super@labeled recever. Add names to metadata of inner classes. 2016-02-20 15:19:21 +03:00
Alexey Andreev
4efceb95e3 [KT-4124] Add less trivial tests 2016-02-20 15:19:20 +03:00
Alexey Andreev
a8014dec50 [KT-4124] Add support for simple nested classes 2016-02-20 15:19:20 +03:00
Stanislav Erokhin
ae7b048fdb Minor. rename 2016-02-20 14:55:18 +03:00
Stanislav Erokhin
3e366f6b2d Minor. cleanup 2016-02-20 14:55:18 +03:00
Stanislav Erokhin
45de06ac0c Minor. Removed generics. 2016-02-20 14:55:17 +03:00
Stanislav Erokhin
63b3cbafa4 Remove old resolution algorithm. 2016-02-20 14:55:17 +03:00
Stanislav Erokhin
acdd807e91 Support "given candidates" mode in new resolution algorithm. 2016-02-20 14:55:16 +03:00
Stanislav Erokhin
daee95f2c4 Refactoring: create separate util function for create constructors resolution candidates 2016-02-20 14:55:16 +03:00
Stanislav Erokhin
7de2013a3e KT-3856 Wrong inner class inaccessible diagnostic for extension to outer class
#KT-3856 Fixed
2016-02-20 14:55:15 +03:00
Zalim Bashorov
61cc8394e8 Minor: fix testdata 2016-02-20 13:11:23 +03:00
Alexander Udalov
1b8f934b54 Delete deprecated enum 'values' property 2016-02-19 22:28:44 +03:00
Alexander Udalov
1eeb72e073 Do not create empty static scope instances for non-enum classes 2016-02-19 22:28:44 +03:00
Alexander Udalov
60fe64dcaa Remove obsolete lazy code in LazyClassDescriptor
This was added in a072550931 when we thought
making 'annotation' an annotation instead of a modifier would be a good idea;
we weren't be able to resolve the class kind immediately then. This is no
longer the case
2016-02-19 22:28:44 +03:00
Zalim Bashorov
d832a3d290 KotlinBuilder: use proper API to update Java mappings 2016-02-19 19:11:10 +03:00
Zalim Bashorov
ae32698c78 Minor: add more sources for jps library 2016-02-19 19:11:09 +03:00
Zalim Bashorov
05eff9028f New IC: don't fail on unsupported difference kinds and process SUPERTYPE_ID_LIST correctly 2016-02-19 19:10:44 +03:00
Dmitry Petrov
90be4f8ea5 KT-6745: change message to reflect that a super qualifier should be an immediate supertype,
not just a supertype.
2016-02-19 16:49:59 +03:00
Michael Bogdanov
1d17bee6cc Don't generate source mapping on inlining 'InlineOnly' functions 2016-02-19 16:08:03 +03:00
Michael Bogdanov
6f1def9366 isInlineOnly renamed to isInlineOnlyOrReified 2016-02-19 16:08:02 +03:00
Dmitry Petrov
30c2abba3c KT-9550: distinguish signature conflict on override from signature conflict of inherited members.
Add a common OverridingStrategy class for cases where we don't care (yet) about precise diagnostics.
2016-02-19 15:59:08 +03:00
Mikhail Glukhikh
883e2e4d2b KT-9498 extension: now type can be inferred for getter with expression body 2016-02-19 14:49:25 +03:00
Michael Bogdanov
405c21a17e Fix for KT-11081: Reified type parameters are lost in anonymous object in inline function when using default value parameters
#KT-11081 Fixed
2016-02-19 14:22:29 +03:00
Mikhail Glukhikh
4c1c64fa08 Quick fix for adding arrayOf wrapper for annotation parameters #KT-10063 Fixed 2016-02-19 13:32:49 +03:00
Mikhail Glukhikh
c9c391e688 Specify property type by accessor type (preliminary) #KT-9498 Fixed 2016-02-19 13:32:46 +03:00
Alexander Udalov
36de3008e3 Fix visibility flags for lambda classes in InnerClasses attribute 2016-02-19 12:52:40 +03:00
Ilya Chernikov
343735e36c fixing test after changing cleanup scheme - first it is now required to rebuild sources, and therefore consumed memory is increased 2016-02-18 21:06:38 +01:00
Ilya Chernikov
8065e490e8 performing cleanup (and memory usage reporting) only if kotlin compiler was actually called, should fix e.g. KT-10127 2016-02-18 21:06:37 +01:00
Alexey Tsvetkov
d0efd4083f Call System.gc only when when log level is debug, fixes KT-11022 2016-02-18 21:06:36 +01:00
Denis Zharkov
bc5110550a Release generated bytecode after each processed part
Part here means separate '.kt' file or multi-file facade
Now this memory optimization doesn't work with jar's,
because there is no simple way to write them incrementally.
2016-02-18 21:22:04 +03:00
Denis Zharkov
b87cc5712c Minor. Weaken value parameter types: ClassFileFactory -> OutputFileCollection 2016-02-18 21:22:04 +03:00
Denis Zharkov
fd32b8dd19 Minor. Transform method to void 2016-02-18 21:22:04 +03:00
Denis Zharkov
cecb998fd3 Simplify ClassFileFactory state
Before this change it contained maps to complex object,
after it retains only necessary information:
- sources files for package parts
- PackageParts objects grouped by package fq name

Both of them needed for writing module mappings
2016-02-18 21:22:04 +03:00
Denis Zharkov
f8f996b2f6 Minor. Move 'done()' call into MultifileClassCodegen itself 2016-02-18 21:22:03 +03:00
Natalia Ukhorskaya
0f3ecab2b4 Replace deprecated usages of CodeInsightColors 2016-02-18 18:37:03 +03:00
Ilya Gorbunov
6b1ed8fd61 JS: use slice() instead of slice(0) to copy arrays (minor). 2016-02-18 17:37:33 +03:00
Ilya Gorbunov
cbd38f007c JS: Do not create a copy of already cloned vararg array.
JVM: Do not create copy of vararg array it it's already Object[].
2016-02-18 17:37:31 +03:00
nik
c69d332db9 until-build set to 146.9999 to make Kotlin plugin compatible with new IDEA builds 2016-02-18 10:11:12 +03:00
Alexander Udalov
35a4aeeeba CLI tests: add LauncherScriptTest instead of generated 'kotlinc' script tests
The compiler behavior on test data in compiler/testData/cli is already tested
with CliTestGenerated, which is 4x faster and does not require to rebuild the
compiler jar with 'ant dist'. Leave only several simple tests to check that
'kotlinc', 'kotlinc-jvm' and 'kotlinc-js' scripts work
2016-02-17 20:52:00 +03:00
Alexander Udalov
04ccca8adc CLI tests: convert to generated 2016-02-17 20:52:00 +03:00
Alexander Udalov
a53166b732 CLI tests: rename CliBaseTest to AbstractCliTest 2016-02-17 20:51:59 +03:00
Alexander Udalov
762504d5e4 CLI tests: convert to JUnit 3 2016-02-17 20:51:58 +03:00
Alexander Udalov
f74988cbec CLI tests: get rid of CliCommonTest 2016-02-17 20:51:58 +03:00
Alexander Udalov
3b22483fb2 CLI tests: move file existance checks to config files 2016-02-17 20:51:57 +03:00
Alexander Udalov
7a6cc71454 CLI: disable colors on platforms unsupported by jansi
#KT-10605 Fixed
2016-02-17 20:51:48 +03:00
Alexander Udalov
2e13377d4a J2K ReplInterpreter: prettify 2016-02-17 20:51:11 +03:00
Alexander Udalov
5670e7f750 J2K ReplInterpreter: convert 2016-02-17 20:51:11 +03:00
Alexander Udalov
2b2c4b3610 J2K ReplInterpreter: move .java -> .kt 2016-02-17 20:51:11 +03:00
Alexey Andreev
8497931455 #EA-79158 Fix translation of empty 'when' statement 2016-02-17 19:18:25 +03:00
Alexey Andreev
133402c1ca #EA-79158 Report code fragment when translator throws an exception. It should help to get a code sample for this issues and all similar issues. 2016-02-17 19:18:24 +03:00
Michael Bogdanov
0283fea835 Optimize recursive string concatenation 2016-02-17 16:53:19 +03:00
Michael Bogdanov
8835b0599a Inline preevaluated string and primitive only constants in compilation time, don't inline const references in non-annotation context, fix for KT-11025: Don't inline const val in compare instuctions
#KT-11025 Fixed
2016-02-17 16:53:18 +03:00
Michael Bogdanov
7c2920febe Don't allow use standalone constants in complexExpressions, fix for KT-11043: Inconsisten result for class literal and string concatenation
#KT-11043 Fixed
2016-02-17 16:53:18 +03:00
Michael Bogdanov
af3437626b Properly calculate isConst for java properties 2016-02-17 16:53:17 +03:00
Natalia Ukhorskaya
c5d788d049 Debugger: do not put breakpoints at lines from another file in case of inline function 2016-02-17 15:08:56 +03:00
Natalia Ukhorskaya
42927bb078 Make function delegated to sam adapter synthetic 2016-02-17 15:08:53 +03:00
Natalia Ukhorskaya
7fb1848bd5 Minor, fix exception: do not try to get line start offset for line < 0 and line == lineCount() 2016-02-17 15:07:19 +03:00
Mikhail Glukhikh
657459ef22 Source of KNPE removed #EA-79002 Fixed 2016-02-17 11:52:49 +03:00
Alexey Sedunov
651b00c323 Pull Members Up: Always insert spaces between keywords
#KT-10971 Fixed
2016-02-17 11:31:46 +03:00
Alexey Sedunov
e1b4f45b35 Implement Abstract Members Intention: Fix EA-79052 2016-02-17 11:31:45 +03:00
Alexey Sedunov
27ea2dc6f9 Change Signature: Fix EA-77624 2016-02-17 11:31:41 +03:00
Alexey Sedunov
d587bb2ea6 Change Signature: Support Change Signature quick-fix for Java -> Kotlin case
#KT-9401 Fixed
2016-02-17 11:31:40 +03:00
Ilya Gorbunov
8761819117 StdLib generators: provide extension points for family properties specific to documentation and code. 2016-02-17 04:23:18 +03:00
Stanislav Erokhin
9781578af2 Update copyright in generated classes. 2016-02-16 20:31:15 +03:00
Stanislav Erokhin
341b251e4d Update copyright in generated tests. 2016-02-16 18:59:10 +03:00
Mikhail Glukhikh
5def6eae5b Correct handling of erroneous code during code extraction 2016-02-16 18:50:24 +03:00
Mikhail Glukhikh
eed4aa71db No assertion error in getContainingPseudocode #KT-10983 Fixed
Also #EA-72954 Fixed
2016-02-16 18:50:20 +03:00
Alexey Andreev
f6fadc4fa5 [KT-10614] Fix passing of inline.kt test 2016-02-16 16:02:17 +03:00
Alexey Andreev
79b42d7fe5 [KT-10614] Fix issue: copy array on vararg call with spread operator 2016-02-16 16:02:16 +03:00
Mikhail Glukhikh
1bbc46729c Effective visibility: concise diagnostic messages #KT-10761 Fixed
Also #KT-9760 Fixed
2016-02-16 15:58:50 +03:00
Mikhail Glukhikh
3049961b9a Revert "Implicit exhaustive when annotation / highlighting"
This reverts commit 0cc09872b6.
2016-02-16 15:57:38 +03:00
Denis Zharkov
d344b5b991 Optimize completion for overridden descriptors 2016-02-16 12:01:14 +03:00
Denis Zharkov
36606fd944 Run slow flexible type assertions only in test mode 2016-02-16 12:01:13 +03:00
Denis Zharkov
961b72682a Drop unnecessary call to substituted 'overriddenDescriptors' 2016-02-16 12:01:13 +03:00
Denis Zharkov
87497a5dc6 Do not run enhancement for fake overrides with one overridden 2016-02-16 12:01:13 +03:00
Denis Zharkov
42d451f2d1 Optimize ErasedOverridabilityCondition
Do not start substitution if some basic conditions are failed
2016-02-16 12:01:13 +03:00
Denis Zharkov
44148107ae Optimize SamAdapterOverridabilityCondition
Do not calculate it for non-static members,
because SAM adapters only exist in static scope now
2016-02-16 12:01:13 +03:00
Denis Zharkov
9f22b17918 Optimize external overridability conditions
- Skip ones that can lead only to success after first success
- And vice versa
2016-02-16 12:01:13 +03:00
Denis Zharkov
1b4b8ab5db Memoize 'JavaTypeClassifierImpl.isRaw' result 2016-02-16 12:01:12 +03:00
Denis Zharkov
d4d289c881 Optimize ResolvedCallImpl for case of empty pararameter set 2016-02-16 12:01:12 +03:00
Alexey Andreev
f1fd701d0d Remove PackageDirectoryMismatch from testData scope since it never actually matches 2016-02-16 11:46:25 +03:00
Alexey Andreev
56cb7c2677 [KT-11027] Fix the issue 2016-02-16 11:46:24 +03:00
Zalim Bashorov
c28b701ccf JS: ignore annotation on expression when its retention is SOURCE
#KT-8258
2016-02-15 21:35:30 +03:00
Mikhail Glukhikh
90927cfd19 CallExpressionResolver.getQualifiedExpressionTypeInfo refactoring 2016-02-15 16:46:24 +03:00
Dmitry Jemerov
37bd08175f K
(cherry picked from commit 8549ec7)
2016-02-15 13:36:45 +01:00
Pavel V. Talanov
1800e5a7db Remove some usages of Name.guess (and rename this utility to discourage new usages) 2016-02-15 13:32:42 +03:00
Pavel V. Talanov
47ceb106c7 Fix "<" or ">" in member name leading to exception 2016-02-15 13:32:41 +03:00
Michael Bogdanov
69afc2316d Internal visibility to TestGroup 2016-02-15 13:15:43 +03:00
Pavel V. Talanov
735b37aa7c Fix stub/ast mismatch for old binaries (rc-1036) in newer versions of plugin 2016-02-15 12:45:13 +03:00
Jake Wharton
f713adc96e Add support for AOSP's nullability annotations.
These are different than 'android.support.annotation' in that they are used on the JVM for projects within AOSP.
2016-02-15 11:32:09 +03:00
Mikhail Glukhikh
84a072b9f0 getQualifiedExpressionTypeInfo refactoring 2016-02-15 10:42:56 +03:00
Mikhail Glukhikh
88e7b728df CallExpressionResolver: converted to Kotlin, cleanup 2016-02-15 10:42:52 +03:00
Mikhail Glukhikh
bd40d59a17 CallExpressionResolver.java --> CallExpressionResolver.kt 2016-02-15 10:42:48 +03:00
Dmitry Jemerov
2a8e1af489 trim -release- from plugin version number when checking whether the runtime is outdated 2016-02-14 15:36:21 +01:00
Ilya Gorbunov
24edbc36df Create at most one wrapper sequence for adjacent drop/take operations on sequences.
Based on PR #814 by Sargun Vohra
#KT-10821 Fixed
2016-02-14 16:46:46 +03:00
Mikhail Glukhikh
a663797cb8 Refactoring: use of EffectiveVisibility class inside isEffectivelyPublic/Private API extensions 2016-02-13 10:48:17 +03:00
Mikhail Glukhikh
0f7284f83a More accurate safe call handling in GenericCandidateResolver / CallExpressionResolver
(real receiver nullability is taken into account)
2016-02-13 10:48:12 +03:00
Mikhail Glukhikh
17593e4ef6 Call completer: safe call with nullable receiver has nullable return type #KT-11007 Fixed 2016-02-13 10:48:07 +03:00
Jake Wharton
0d6ec35f7f Include source folders from registered source-generating tasks.
This includes the output directories from tasks which generate Java code which were registered with registerJavaGeneratingTask().
2016-02-13 02:34:06 -05:00
Valentin Kipyatkov
4cd7193047 KT-11018 Ctrl + Mouse Hover shows a var as val
#KT-11018 Fixed
2016-02-13 10:20:20 +03:00
Valentin Kipyatkov
c9f26de9f5 Introduce/eliminate when subject intentions to keep line breaks and comments 2016-02-13 10:20:19 +03:00
Valentin Kipyatkov
ce54a2d4bd If to when conversion preserves comments too 2016-02-13 10:20:19 +03:00
Valentin Kipyatkov
0ed8eb0512 KT-5717 "Replace 'when' with 'if'" loses a comment
#KT-5717 Fixed
2016-02-13 10:20:19 +03:00
Valentin Kipyatkov
0809be59df KT-10619 Wrong completion after package name in annotation
#KT-10619 Fixed
2016-02-13 10:20:19 +03:00
Valentin Kipyatkov
17ac168b33 KT-10621 Non-top level packages shown after "@" in completion
#KT-10621 Fixed
2016-02-13 10:20:18 +03:00
Michael Bogdanov
4f0f81155a Weaken PRIVATE_CLASS_MEMBER_FROM_INLINE diagnostic 2016-02-12 17:24:30 +03:00
Michael Bogdanov
384d2ea0d1 Use bipush, sipush for byte and short constants 2016-02-12 11:55:21 +03:00
Anton Sukhonosenko
0073257841 Fix for KT-10313: ClassCastException with Generics
#KT-10313 Fixed
2016-02-12 10:53:28 +03:00
Dmitry Petrov
edf6a2142b Check local function declarations for overload conflicts.
In PSI unifier tests, disable errors for tests on local functions (as irrelevant).
2016-02-12 09:54:21 +03:00
Ilya Gorbunov
17a95384e1 Change default buffer size to be 8K (same default as in java BufferedReader).
Rename internal constants.
2016-02-12 05:07:10 +03:00
Nikolay Krasko
faba229b11 Use single constant for doNotAnalyze message 2016-02-11 17:39:51 +03:00
Nikolay Krasko
ca0346bdae Fix forgotten test data for 10648f44ac (KT-10212) 2016-02-11 16:24:38 +03:00
Nikolay Krasko
85436de2b3 Minor: Add new lines to make failure message more readable 2016-02-11 16:20:30 +03:00
Nikolay Krasko
ae36e9c4c4 Don't show message if there were no messages
Otherwise "Notification should have content" error is logged.
2016-02-11 16:05:18 +03:00
Nikolay Krasko
e1d12af2fd Check element is valid if canRefactor() 2016-02-11 15:36:16 +03:00
Nikolay Krasko
9b44b0b1c0 Check element is valid before requesting type (EA-74737) 2016-02-11 15:36:15 +03:00
Alexey Sedunov
eabe675dbf Create from Usage: Add delegation call to secondary constructor declaration 2016-02-11 14:25:26 +03:00
Alexey Sedunov
6696d2b70a Create from Usage: Do not generate secondary constructor body by default 2016-02-11 14:25:24 +03:00
Alexey Sedunov
cc2a65e874 Create from Usage: Always insert parentheses around secondary constructor parameter list
#KT-10912 Fixed
2016-02-11 14:25:23 +03:00
Alexey Sedunov
8e81d0ce5f Change Signature: Skip implicit receiver references if extension receiver is dropped 2016-02-11 14:25:22 +03:00
Alexey Sedunov
a9ddc4da1a Change Signature: Warn about safe call receiver being transformed to value argument
#KT-8744 Fixed
2016-02-11 14:25:16 +03:00
Alexey Sedunov
b3801ffac7 Change Signature: Fix implicit receiver ->argument convertion in recusrive calls
#KT-8744 In Progress
2016-02-11 14:25:04 +03:00
Alexey Sedunov
d8c0671d94 Minor: Remove unused property 2016-02-11 14:25:02 +03:00
Pavel V. Talanov
7d98103c0c overriddenDescriptors is empty for java static property and function declarations
Fake overrides are still created for java static with non-empty overriddenDescriptors

Add tests for inheriting visibility for java static members
Add test: check that java static declarations that shadow deprecated declarations should not be deprecated
Add test for corner case where "overriding" java static constant led to incorrect type in inheritor

Fix test data for existing tests
2016-02-11 14:08:14 +03:00
Pavel V. Talanov
7e78e8d8ab Refactor: Move and rename OverridingUtil.DescriptorSink -> OverridingStrategy 2016-02-11 14:08:13 +03:00
Valentin Kipyatkov
c9bb020d6e KT-9738 Code completion of "emptyList()" after elvis operator inserts explicit type arguments
#KT-9738 Fixed
2016-02-11 12:26:23 +03:00
Valentin Kipyatkov
8da01e7952 Minor 2016-02-11 12:26:22 +03:00
Valentin Kipyatkov
377f4af369 Fixed EA-74848 + conversion was incorrect! 2016-02-11 12:26:22 +03:00
Valentin Kipyatkov
2ce06f250b Fixed EA-74166 2016-02-11 12:26:22 +03:00
Valentin Kipyatkov
8056c5182a Fixed EA-73613 2016-02-11 12:26:22 +03:00
Dmitry Petrov
aed2f2b993 Property vs classifier conflict.
TODO get rid of duplicate diagnostics
(looks like OverloadResolver and DeclarationResolver are partially redundant; refactor them).
2016-02-11 10:32:46 +03:00
Dmitry Petrov
b2eb4200af OverloadResolver.kt: convert to Kotlin & cleanup 2016-02-11 10:32:45 +03:00
Dmitry Petrov
6278459cc4 OverloadResolver.java --> .kt 2016-02-11 10:32:45 +03:00
Nikolay Krasko
d8ba52e582 Print kotlin compiler version in build script 2016-02-11 02:52:01 +03:00
Nikolay Krasko
6fe416cc4a Null name in library fix (EA-78733) 2016-02-11 02:52:00 +03:00
Nikolay Krasko
3f5f892e1b Add html escaping for declaration names in calls (KT-10763)
#KT-10763 Fixed
2016-02-11 02:49:00 +03:00
Zalim Bashorov
45f21bc7fd Minor: drop content from touch files 2016-02-10 22:56:10 +03:00
Zalim Bashorov
ced23c02bd New IC: add processing changes for constants 2016-02-10 22:56:09 +03:00
Zalim Bashorov
e33e31ad16 KotlinBuilder: don't request additional round when it's unnecessary & fix warnings 2016-02-10 21:37:12 +03:00
Zalim Bashorov
88c8f24887 Caching results of JpsUtils#isJsKotlinModule
#KT-9636 Fixed
2016-02-10 21:30:25 +03:00
Denis Zharkov
12552d2fc1 Refine special bridges generation
#KT-10958 Fixed
2016-02-10 20:18:46 +03:00
Denis Zharkov
6d98909c7a Minor. Add not-nullable upper bound 2016-02-10 20:18:46 +03:00
Denis Zharkov
45bf300144 Minor. Rename variables 2016-02-10 20:18:46 +03:00
Denis Zharkov
0fb565851f Minor. Extract function 2016-02-10 20:18:46 +03:00
Denis Zharkov
8592a57be4 Drop unnecessary check and corresponding parameter 2016-02-10 20:18:46 +03:00
Denis Zharkov
0b37d032c8 Minor. Split complicated conditions 2016-02-10 20:18:46 +03:00
Natalia Ukhorskaya
9070eff6ad KotlinPositionManager: add progress when computing classnames for inline function 2016-02-10 18:30:29 +03:00
Denis Zharkov
9ac2da8c96 Optimize 'setResultingSubstitutor'
Replace Map with plain List, use parameter's index as a key
2016-02-10 16:18:59 +03:00
Denis Zharkov
b9e677fef4 Get rid of redundant Map copy 2016-02-10 16:18:59 +03:00
Denis Zharkov
de3f507744 Add minor memory optimization
Get rid of 'unsubstitutedValueArguments' in resolved call
2016-02-10 16:18:59 +03:00
Mikhail Glukhikh
a08b8f43b2 Control flow graph for safe calls corrected #KT-10913 Fixed
Also #KT-10186 Fixed
Also #KT-5198 Fixed
2016-02-10 12:29:45 +03:00
Natalia Ukhorskaya
5ae394fec0 Optimize reference search for convention functions 2016-02-10 11:36:30 +03:00
Natalia Ukhorskaya
1f6894cdd4 EA-77626 - KNPE: AnonymousFunctionToLambdaIntention.applicabilityRange 2016-02-10 11:36:30 +03:00
Nikolay Krasko
5c6c1173a6 Aggregate configuration messages into one notification (KT-10489)
#KT-10489 Fixed
2016-02-10 01:31:38 +03:00
Nikolay Krasko
e2f1a5c092 Minor: refactoring 2016-02-10 01:31:37 +03:00
Zalim Bashorov
cf173d6963 Improve test multifilePackagePartMethodAdded: add file which should not be affected 2016-02-09 23:27:26 +03:00
Zalim Bashorov
f6e7f8c3c0 Introduce TestingContext to pass data between tests and KotlinBuilder; introduce BuildLogger to log build events (build finished, files marked as dirty) in KotlinBuilder 2016-02-09 23:27:25 +03:00
Zalim Bashorov
4ec3865830 Log final exit code instead of intermediate; change log level for build result to INFO 2016-02-09 23:27:24 +03:00
Ilya Gorbunov
1fca1cc607 Use foreach loop instead of directly taking iterator in sum and average.
Use indexed loop for arrays in reduce and reduceIndexed.
#KT-10579 Fixed
2016-02-09 22:51:39 +03:00
Ilya Gorbunov
6c7cefaae3 Use HALF_EVEN rounding mode by default for BigDecimal division operator.
#KT-10462 Fixed
2016-02-09 22:51:02 +03:00
Dmitry Jemerov
8b5e9d1685 code review; add one more missing description 2016-02-09 19:23:00 +01:00
Dmitry Jemerov
6e1705dd16 port IDEA's InspectionDescriptionTest into Kotlin
#KT-10345 Fixed
2016-02-09 19:23:00 +01:00
Dmitry Jemerov
daf26f4db3 more consistent inspection display names; add missing inspection descriptions
#KT-10908 Fixed
2016-02-09 19:22:59 +01:00
Alexey Sedunov
bb2a5b00b7 Change Signature: Fix reference substitution when default value is a single simple name reference
#KT-10954 Fixed
2016-02-09 19:18:50 +03:00
Alexey Sedunov
792d9c1ae2 Introduce Variable: Skip type in template if no resolvable/non-error types are available in the current context
#KT-10808 Fixed
2016-02-09 19:18:45 +03:00
Zalim Bashorov
eacd50c4dc FIx possible NPEs when try to use TestModuleProperties in IDEA 144.x
#EA-78931 Fixed
2016-02-09 15:55:16 +03:00
Michael Bogdanov
0f90dc1649 Code clean and some refactorings in 'getLambdaIfExistsAndMarkInstructions' 2016-02-09 10:19:16 +03:00
Michael Bogdanov
c75b514551 Get rid of InstructionsAndFrames.kt 2016-02-09 10:19:15 +03:00
Michael Bogdanov
b8ee2ecdac Support extension lambda inlining in complex stack cases (nullable receiver) 2016-02-09 10:19:15 +03:00
Ilya Gorbunov
78b7fb15f3 J2K, expected errors: for each argument of removed overloads 2016-02-09 02:58:09 +03:00
Ilya Gorbunov
b4ebaad8f5 Drop previously deprecated API. 2016-02-09 02:58:07 +03:00
Stanislav Erokhin
434bd0707d Correcting rewrite type info after compete call.
#KT-10934 Fixed
#KT-10896 Fixed
2016-02-08 20:49:31 +03:00
Zalim Bashorov
74b2c8cd31 Minor: fix method name 2016-02-08 19:31:17 +03:00
Ilya Gorbunov
17ebb36128 Test Throwable properties in JS, don't work as expected, commiting as ignored.
#KT-10911
2016-02-08 18:10:46 +03:00
Ilya Gorbunov
5361f6e941 Make Throwable properties message and cause open.
#KT-5587 Fixed
2016-02-08 18:10:46 +03:00
Pavel V. Talanov
f12c653aed KtLightClassForFacade is not valid if any of the files it was built for doesn't have top level callables
#KT-9434 Fixed
2016-02-08 16:45:47 +03:00
Pavel V. Talanov
f59a4c537e Minor: remove some dead code 2016-02-08 16:45:46 +03:00
Nikolay Krasko
909ced5fa2 Use non-local functions to avoid creating lambdas in heap 2016-02-08 16:43:55 +03:00
Nikolay Krasko
99a693a14b Too many empty ArrayList stored for arguments 2016-02-08 16:43:54 +03:00
Nikolay Krasko
ff2029035e Don't generate new empty list with TypeParameterDescriptor 2016-02-08 16:43:54 +03:00
Denis Zharkov
cd3f7df28c Create deep descriptors copy for Change signature
It's needed to prevent accesses to invalid PSI
after changes has been applied
2016-02-08 16:40:47 +03:00
Denis Zharkov
c879f83037 Fix primitive types mapping
Use boxed version if type was enhaced to not-nullable
2016-02-08 16:40:47 +03:00
Denis Zharkov
68110f5859 Add minor optimization
Do not copy overrides while creating FAKE_OVERRIDE
2016-02-08 16:40:47 +03:00
Denis Zharkov
18e7272a1e Do not force overridden descriptors computation
Currently 'overriddenDescriptors' of substituted function is lazy
and in most cases it's unnecessary to compute it
(it's enough to use the same field from 'original')
2016-02-08 16:40:47 +03:00
Denis Zharkov
9e3d381eb3 Perform computation of overridden descriptors lazy
It's makes sense in cases when descriptors are being substituted, because
in many cases their overridden are not needed.
2016-02-08 16:40:47 +03:00
Denis Zharkov
fae6de9acd Replace 'addOverriddenDescriptor' with 'setOverriddenDescriptors'
It helps to get rid of redundant SmartSets (e.g. for top-level functions)
2016-02-08 16:40:47 +03:00
Denis Zharkov
c1f57b743b Do not build enhanced descriptors if they are unchanged 2016-02-08 16:40:47 +03:00
Denis Zharkov
924d706e79 Release original Java descriptors while enhancing
It's both more correct and helps to release memory retained by
descriptor before enhancement
2016-02-08 16:40:47 +03:00
Denis Zharkov
beea2d5d10 Use source elements instead of descriptors
It's needed because resulting descriptors are different
(because they are enhanced) from ones on which load error is reported.
See where latter happens

Currently we suppose that source elements should be stable
2016-02-08 16:40:47 +03:00
Michael Bogdanov
848549dd5d Rollback "Fix for KT-10659: Debugger: Evaluate Expression and Watches fail for inline function parameter passed by reference" 2016-02-08 16:43:22 +03:00
Pavel V. Talanov
9e5c387d6c PropertyCodegen: Diagnose descriptor not found for property 2016-02-08 16:18:36 +03:00
Natalia Ukhorskaya
25b8e4f1b2 Do not compute classnames during stepping
#KT-10827 Fixed
2016-02-08 15:49:11 +03:00
Natalia Ukhorskaya
d238df8525 Debugger: add test for line breakpoint variants with inline function call. Fix testData for muted test 2016-02-08 15:49:11 +03:00
Zalim Bashorov
3c4cb54573 Allow to use internal declarations from special modules in compiler (JPS)
(e.g. IDEA 16 gradle tests loaded in separate module)

 #KT-10595 Fixed
2016-02-08 15:42:49 +03:00
Zalim Bashorov
e328c24857 J2K KotlinBuilderModuleScriptGenerator: cleanup 2016-02-08 15:42:48 +03:00
Zalim Bashorov
21e69a0a4c J2K KotlinBuilderModuleScriptGenerator: convert 2016-02-08 15:42:48 +03:00
Zalim Bashorov
d5030335b6 J2K KotlinBuilderModuleScriptGenerator: .java -> .kt 2016-02-08 15:42:48 +03:00
Zalim Bashorov
2c1d1e84a6 Allow to use internal declarations from special modules in IDEA
(e.g. IDEA 16 gradle tests loaded in separate module)

 #KT-10595 Fixed
2016-02-08 15:42:47 +03:00
Dmitry Petrov
5968ce96df KT-10939 CANNOT_COMPLETE_RESOLVE for inherited generic interface method
'original' for value parameters of fake override is not a value parameter of unsubstituted fake override.
Match value parameters by index.
2016-02-08 10:08:35 +03:00
Alexander Udalov
9f786c00a7 Fix test data after removing old annotation classes 2016-02-07 10:03:19 +05:30
Nikolay Krasko
938a435346 Allow to process return statements without parent KtDeclaration (EA-70883) 2016-02-06 17:50:17 +03:00
Nikolay Krasko
1e50847985 SOE on setEnabled(). setEnabled() changes were propagated back to action group with the request to update state (EA-71014) 2016-02-06 17:50:16 +03:00
Alexander Udalov
e82d549853 Delete old metadata annotation classes 2016-02-06 15:53:55 +05:30
Alexander Udalov
8800782c83 Move constants from JvmAnnotationNames closer to usages 2016-02-06 15:53:55 +05:30
Alexander Udalov
2f5a6ac465 Minor, add extra constant to JvmAnnotationNames, drop unneeded utility 2016-02-06 15:53:55 +05:30
Alexander Udalov
5de1cf3bb4 Do not write old metadata annotations to bytecode 2016-02-06 15:53:55 +05:30
Alexander Udalov
ba80e8ba81 Use kotlin.Metadata instead of old annotations in IDE, reflection and tests 2016-02-06 15:53:55 +05:30
Mikhail Glukhikh
7da981e12c Regression tests #KT-8168 Obsolete 2016-02-05 18:29:40 +03:00
Denis Zharkov
0efe28a12a Do not inline non-const vals
#KT-10425 Fixed
2016-02-05 17:43:55 +03:00
Yan Zhulanow
f2edcd99a8 Illegal Dalvik identifier inspection 2016-02-05 17:28:50 +03:00
Denis Zharkov
8d87800a05 Fix JVM crash
Replace inlined 'let' containing complicated control flow with common `if`
2016-02-05 17:26:10 +03:00
Valentin Kipyatkov
affbefdfbe Better diagnostic for EA-70945 2016-02-05 16:29:58 +03:00
Valentin Kipyatkov
ce8e2d7a65 Added better diagnostic for EA-75805 2016-02-05 16:29:58 +03:00
Valentin Kipyatkov
3fe6f9cad2 More correct convertation to string template when number literals involved 2016-02-05 16:29:57 +03:00
Valentin Kipyatkov
9c426e70e1 Fixed EA-75114 2016-02-05 16:29:57 +03:00
Valentin Kipyatkov
c914ca0626 Fixed EA-75251 2016-02-05 16:29:57 +03:00
Valentin Kipyatkov
eca581ef43 Fixed EA-75979 2016-02-05 16:29:56 +03:00
Valentin Kipyatkov
8b6338ce62 Fixed EA-76497 2016-02-05 16:29:56 +03:00
Michael Bogdanov
bc2077bfaf More wise lambda search during inlining 2016-02-05 15:42:46 +03:00
Denis Zharkov
16f412f993 Generate multi-files facade even if it's empty
It still contains useful information about it's parts,
that may be used while building stubs for multi-file group
containing only InlineOnly functions
2016-02-05 15:02:24 +03:00
Denis Zharkov
889b136a68 Refine multi-file facades generation
Do not generate delegation from multi-file facade to inline-only functions
because they are effectively private in bytecode

 #KT-10858 Fixed
2016-02-05 15:02:24 +03:00
Dmitry Petrov
e4583fd275 Do not report IMPLICIT_CAST_TO_ANY on last statement of lambda with Unit(?) in at least one branch. 2016-02-05 10:44:50 +03:00
Dmitry Jemerov
fa8706b46a a bit more diagnostics to track down "Cannot find package fragment for file" 2016-02-04 15:50:25 +01:00
Ilya Gorbunov
6038bde3c1 Inline-only Lazy.getValue extension 2016-02-04 17:30:12 +03:00
Yan Zhulanow
8c17c5f40b Pack actual Kotlin Android compiler plugin sources into kotlin-android-extensions-ver-sources.jar 2016-02-04 17:24:44 +03:00
Pavel V. Talanov
c600fe1dc3 Fix "Select in project view" and "autoscroll from source" not working in some cases
#KT-9278 Fixed
  #KT-8356 Fixed
2016-02-04 17:13:21 +03:00
Stanislav Erokhin
9c72a388b2 Random code change to prevent JVM crash on windows (JRE version: 6.0_45-b06)
JVM crash log:
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x06b1e0ae, pid=2908, tid=1656
#
# JRE version: 6.0_45-b06
# Java VM: Java HotSpot(TM) Client VM (20.45-b01 mixed mode windows-x86 )
# Problematic frame:
# J  org.jetbrains.kotlin.idea.formatter.KotlinPreFormatProcessor$Visitor.visitNamedDeclaration(Lorg/jetbrains/kotlin/psi/KtNamedDeclaration;)V
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#

---------------  T H R E A D  ---------------

Current thread (0x5f0bb800):  JavaThread "AWT-EventQueue-1 IDEA 15.0.4#IC-143.SNAPSHOT IDEA, eap:true, os:Windows Server 2008 R2 6.1, java-version:Sun Microsystems Inc. 1.6.0_45-b06 IDEA 15.0.4#IC-143.SNAPSHOT IDEA, eap:true, os:Windows Server 2008 R2 6.1, java-version:Sun Microsystems Inc. 1.6.0_45-b06" [_thread_in_Java, id=1656, stack(0x60520000,0x60570000)]

siginfo: ExceptionCode=0xc0000005, writing address 0x8b8721bf

Registers:
EAX=0x0b8721c0, EBX=0x0b655c10, ECX=0x00000000, EDX=0x4789df50
ESP=0x6056d620, EBP=0x6056df7c, ESI=0x0b0b3618, EDI=0x0b8721d0
EIP=0x06b1e0ae, EFLAGS=0x00010246

Top of Stack: (sp=0x6056d620)
0x6056d620:   00000006 0b86d8b8 0afd5c68 026112bb
0x6056d630:   0b86f1a6 0b86f1dc 6056e088 05632944
0x6056d640:   00000004 00000000 6056e088 0b86f214
0x6056d650:   00000086 6056d668 6dae8209 0b86f214
0x6056d660:   0b86f074 00000086 6056d8b0 049aec30
0x6056d670:   0b872170 0b655c10 0b871c80 0b0b5210
0x6056d680:   0b0b4df8 0b8721c0 00000005 0b8705c0
0x6056d690:   0afd5c68 0b86eef8 0afd5c68 0b86d8b8

Instructions: (pc=0x06b1e0ae)
0x06b1e08e:   b9 0e 00 00 89 79 34 8b 4a 68 89 08 89 50 04 33
0x06b1e09e:   c9 89 48 08 89 48 0c 89 44 24 64 b9 00 00 00 00
0x06b1e0ae:   89 88 ff ff ff 7f f0 83 04 24 00 83 fb 00 0f 84
0x06b1e0be:   12 00 00 00 81 7b 04 60 06 0d 45 0f 85 05 00 00

Register to memory mapping:

EAX=
[error occurred during error reporting (printing register info), id 0xc0000005]

Stack: [0x60520000,0x60570000],  sp=0x6056d620,  free space=309k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
J  org.jetbrains.kotlin.idea.formatter.KotlinPreFormatProcessor$Visitor.visitNamedDeclaration(Lorg/jetbrains/kotlin/psi/KtNamedDeclaration;)V
J  com.intellij.psi.impl.source.PostprocessReformattingAspect.doPostponedFormattingInner(Lcom/intellij/psi/FileViewProvider;)V
2016-02-04 15:48:18 +03:00
Nikolay Krasko
63a50ca3a9 Can't get file when event is invalid (EA-77748) 2016-02-04 15:12:02 +03:00
Pavel V. Talanov
7c84225cc4 Fix typechecker when initializer of destructuring declaration is unresolved or missing 2016-02-04 15:08:39 +03:00
Pavel V. Talanov
a4e3dd7030 Minor: refactor DestructuringDeclarationResolver 2016-02-04 15:08:39 +03:00
Zalim Bashorov
ba6c738cb5 Minor: don't init AnsiConsole when coloring is disabled 2016-02-04 14:36:31 +03:00
Dmitry Jemerov
bcc3102e05 highlight usages for parameter doesn't look at base declarations
#KT-10204 Fixed
2016-02-04 11:35:22 +01:00
Dmitry Jemerov
37976e516c postpone isJsProject() check
#KT-9026 Fixed
2016-02-04 11:31:46 +01:00
Pavel V. Talanov
abcdae8e69 Prevent recursion when computing parameter list of KtLightMethod (part 2)
Use ClsWrapperStubPsiFactory when building light classes for decompiled kotlin classes
2016-02-04 12:55:19 +03:00
Alexey Sedunov
5f037d372d Intentions: Move member of companion object to corresponding class
#KT-9697 Fixed
2016-02-04 12:26:19 +03:00
Alexey Sedunov
d13ac6b5a4 Intentions: Move class member to companion object
#KT-9697 In Progress
2016-02-04 12:26:18 +03:00
Alexey Sedunov
fe8a0ec2bc Move: Additional test for KT-10553 (private top-level property with default accessors) 2016-02-04 12:26:17 +03:00
Alexey Sedunov
48b538cebf Light Classes: Provide backing fields (if any) as one of property's light elements 2016-02-04 12:26:15 +03:00
Dmitry Petrov
b5145ea68b Use implementation part class for SMAP generation when inlining function both from binaries and sources. 2016-02-04 10:17:30 +03:00
Dmitry Jemerov
0a46033d40 ensure Kotlin's move handlers run before Java's
#KT-10703 Fixed
2016-02-03 17:44:29 +01:00
Alexey Andreev
e9d5d8f0fe [KT-7683] Implement translation of 'when .. in' clause to JS 2016-02-03 19:08:58 +03:00
Natalia Ukhorskaya
6ee4071462 Debugger: use top elements to cache classnames to minimize cache size 2016-02-03 18:53:50 +03:00
Natalia Ukhorskaya
2fa00f87e0 Minor: add some clarifications 2016-02-03 18:53:50 +03:00
Natalia Ukhorskaya
9b978377d0 Debugger: merge KotlinPositionManagerCache into KotlinDebuggerCaches 2016-02-03 18:53:50 +03:00
Natalia Ukhorskaya
b5b2bbc9ab Minor: rename KotlinEvaluateExpressionCache 2016-02-03 18:53:50 +03:00
Natalia Ukhorskaya
ccd22cd5ca KotlinPositionManager: use cache for classNames where possible 2016-02-03 18:53:50 +03:00
Natalia Ukhorskaya
f28f7eaa3b ExtraSteppingFilter: do not compute classNames for inline 2016-02-03 18:53:50 +03:00
Natalia Ukhorskaya
876e458c04 Add cache for library files 2016-02-03 18:53:50 +03:00
Natalia Ukhorskaya
e89638f937 Move typeMappers cache to KotlinPositionManagerCache 2016-02-03 18:53:50 +03:00
Natalia Ukhorskaya
c808f4ec2a KotlinPositionManager: add cache for classNames by psiElement 2016-02-03 18:53:50 +03:00
Mikhail Glukhikh
60d56b30bf Safe call arguments are now handled as nullable in generic resolver #KT-9985 Fixed 2016-02-03 18:34:10 +03:00
Dmitry Jemerov
187694d1b0 don't veto rename of constructors
#KT-9693 Fixed
2016-02-03 15:58:05 +01:00
Stanislav Erokhin
34d8dd9127 Add optimization for fake overrides creation. 2016-02-03 17:47:40 +03:00
Stanislav Erokhin
ec991b4ced Minor. Update run configuration. 2016-02-03 17:47:39 +03:00
Zalim Bashorov
030c55ebb2 Minor: fix testdata 2016-02-03 17:35:14 +03:00
Ilya Gorbunov
805410bb19 J2K: Remove special conversion for String.format. 2016-02-03 17:14:02 +03:00
Ilya Gorbunov
c243a2bdd5 In addition to extension String.format introduce String.Companion.format(format, args) to be used like in java. 2016-02-03 17:14:01 +03:00
Ilya Gorbunov
7105c7c182 Documentation stubs for new packages. 2016-02-03 17:04:28 +03:00
Mikhail Glukhikh
0c32fab690 Type comparison: first check for star projections, then obtain constructor parameters #KT-10893 Fixed
Also #EA-78405 Fixed
2016-02-03 16:26:39 +03:00
Pavel V. Talanov
c5be8ce1d3 Prevent recursion when computing parameter list of KtLightMethod
#KT-10890 Fixed
 #KT-10851 Fixed
2016-02-03 16:08:05 +03:00
Dmitry Petrov
4afe98a0f6 Better diagnostics for conflicting overloads.
Skip declarations without sources in reporting, not when determining redeclaration groups:
this allows emitting informative diagnostics for incremental compilation.
Provide containing declaration with "kind", e.g., "package '<root>'", "class A", and so on.
2016-02-03 15:53:07 +03:00
Zalim Bashorov
130301aa27 Minor: log the content of module.xml when a source root not found on FS
Related issues: #KT-9587 #KT-10394
2016-02-03 15:28:20 +03:00
Dmitry Jemerov
e227f6fc74 use more deterministic check to determine that "Configure Kotlin in project" notification should be displayed
#KT-10898 Fixed
2016-02-03 13:18:54 +01:00
Michael Bogdanov
394221fefb Updated test data 2016-02-03 10:35:32 +03:00
Michael Bogdanov
6ae6f72156 Fix for crashed build 2016-02-03 10:35:31 +03:00
Michael Bogdanov
4b203de608 INVISIBLE_MEMBER_FROM_INLINE renamed to NON_PUBLIC_CALL_FROM_PUBLIC_INLINE 2016-02-03 10:35:29 +03:00
Michael Bogdanov
d1db404959 Error diagnostic for private classes in inline functions; Fix for KT-7545: IllegalAccessError when accessing private nested class through inlined function from different package
#KT-7545 Fixed
2016-02-03 10:32:41 +03:00
Michael Bogdanov
71c2a6e792 Generate package private visibility in bytecode for private classes 2016-02-03 10:32:41 +03:00
Ilya Gorbunov
751ac3912d IDEA version for bootstrapping (use IDEA built with kotlin rc branch) 2016-02-03 00:23:10 +03:00
Ilya Gorbunov
f19ef6e3d5 SAM-constructors for Iterable and Sequence interfaces. 2016-02-03 00:13:17 +03:00
Ilya Gorbunov
947fd84f1e Minor: reorder primitive specializations in generated code (according to the order they defined in java). 2016-02-02 22:06:34 +03:00
Ilya Gorbunov
7a50562a4e Minor: reorder families in generated code. 2016-02-02 22:06:34 +03:00
Ilya Gorbunov
477b57cdfd Rearrange stdlib, part 2: rename files to better represent their content. 2016-02-02 22:06:33 +03:00
Ilya Gorbunov
57cfa54957 Rearrange stdlib between files and folders, rename files to better represent their content.
Fix package part name in testData
2016-02-02 22:06:32 +03:00
Dmitry Jemerov
c881cd1070 use new API for excluding Kotlin plugin from update checks 2016-02-02 16:19:29 +01:00
Dmitry Jemerov
45a387668b don't show two "Rename variables" checkboxes for a Kotlin class
#KT-8509 Fixed
2016-02-02 15:55:54 +01:00
Dmitry Jemerov
db5191041f better place for J2K options
#KT-10513 Fixed
2016-02-02 14:43:26 +01:00
Mikhail Glukhikh
45298e0bad Delegated properties now cannot be used before initialization #KT-10869 Fixed 2016-02-02 16:27:20 +03:00
Dmitry Petrov
65f754ffca Fix KT-10764 IDEA doesn't show overload conflict between constructor and function...
When checking for overloads in package, consider functions and top-level class constructors as possibly conflicting between each other. NB OverloadUtil uses containing package scope from module descriptor.

Change diagnostic message for CONFLICTING_OVERLOAD: it's misleading in case of fun vs constructor conflict.

Add custom multifile test for diagnostics in IDE (probably not the best; should preprocess file content if it's required to check highlighting in multiple files, not only in the first file).

Add test for KT-10765 Incremental compilation misses overload conflict between constructor and function ...
2016-02-02 16:21:26 +03:00
Nikolay Krasko
7dd725f0a4 Failed build is good enough for version increment 2016-02-02 16:10:54 +03:00
Dmitry Jemerov
4a1d282de6 don't try to parse empty text as XML 2016-02-02 13:40:23 +01:00
Denis Zharkov
8df05c6c4c Refine 'isMoreSpecific' calculation
Choose member with better visibility, it's needed for proper calculation
of types intersection member scope

 #KT-10481 Fixed
2016-02-02 15:26:49 +03:00
Ilya Gorbunov
148b53fc62 Add UTF_32 charsets to Charsets object as lazy initialized properties.
#KT-10379 Fixed
2016-02-02 15:23:22 +03:00
Natalia Ukhorskaya
f29efc2ca2 Evaluate expression shouldn't be applicable for class name of Java class in static call
#KT-7261 Fixed
2016-02-02 15:16:14 +03:00
Natalia Ukhorskaya
893c2495fe Minor: regenerate tests 2016-02-02 15:16:14 +03:00
Natalia Ukhorskaya
51ea804d88 Debugger: do not write exception to log in some valid cases 2016-02-02 15:16:14 +03:00
Natalia Ukhorskaya
45f96f8f32 Evaluate expression shouldn't be applicable for name of named parameter in function call
#KT-7266 Fixed
2016-02-02 15:16:14 +03:00
Natalia Ukhorskaya
4f76207a27 Fix breakpoints in inline function with generic crossinline argument
#KT-10673 Fixed
2016-02-02 15:16:14 +03:00
Natalia Ukhorskaya
b19d32e4f2 Public members should have bigger priority in debugContext
#KT-10634 Fixed
2016-02-02 15:16:14 +03:00
Natalia Ukhorskaya
d60a5e65c1 Debugger: skip visibility check 2016-02-02 15:16:14 +03:00
Dmitry Petrov
bad8320038 Fix for KT-10881 Declaring constant in a mutlifile class causes an IllegalAccessError on its usage.
Generate fields for 'const' properties in facade class.

NB reading annotations for 'const' vals in multifile class doesn't work, KT-10892.
2016-02-02 15:06:21 +03:00
Dmitry Jemerov
970d6f6834 generate local variables table for @JvmOverloads-generated methods
#KT-7319 Fixed
2016-02-02 12:11:51 +01:00
Yan Zhulanow
da7acd5e73 Check annotations on default property getter/setter 2016-02-02 13:14:56 +03:00
Mikhail Glukhikh
7e528da00a Regression codegen test #KT-8344 Obsolete 2016-02-02 12:43:52 +03:00
Denis Zharkov
816c66063b Report special diagnostic when fake-call receiver is nullable
#KT-3602 Fixed
2016-02-02 08:17:49 +03:00
Denis Zharkov
829a5639f1 Rework error reporting for fake call resolution
Move diagnostic creation to one place
2016-02-02 08:17:48 +03:00
Denis Zharkov
9b3f557337 Report MEMBER_PROJECTED_OUT on calls with smart cast receiver
#KT-10856 Fixed
2016-02-02 08:17:48 +03:00
Ilya Gorbunov
05192547da Make DEFAULT_BUFFER_SIZE a constant. 2016-02-01 22:20:31 +03:00
Ilya Gorbunov
801a26a544 Fix testData 2016-02-01 22:20:30 +03:00
Ilya Gorbunov
a192915c82 Do not inline Regex.replace 2016-02-01 22:20:28 +03:00
Ilya Gorbunov
dccae6c3ff Introduce annotation InlineExposed to indicate internal members effectively public due to usage in inlined functions.
Currently, doesn't affect anything.

Make collectionSizeOrDefault and collectionSizeOrNull internal, but expose them via inlining together with mapCapacity.

Make Regex(Pattern) constructor exposed by inlined Pattern.toRegex
2016-02-01 22:20:27 +03:00
Ilya Gorbunov
dacf25fdec Make all assert inline. Field _Assertions.ENABLED instead of property ASSERTIONS_ENABLED 2016-02-01 22:09:19 +03:00
Ilya Gorbunov
c763b592a5 IDEA version for bootstrapping
Build markdown every time (again).
2016-02-01 22:09:18 +03:00
Ilya Gorbunov
1cef327880 Throw assertion when inline-only is applied without inline 2016-02-01 22:09:17 +03:00
Ilya Gorbunov
a12fe2c18a Do not use inline-only in java 2016-02-01 22:09:17 +03:00
Ilya Gorbunov
8a00db5661 Include internal annotatations in mock runtime 2016-02-01 22:09:16 +03:00
Ilya Gorbunov
fc3f98dae2 Deprecate currentThread property 2016-02-01 22:09:15 +03:00
Ilya Gorbunov
42bd8df2ca Drop CharSequence.get extension 2016-02-01 22:09:14 +03:00
Ilya Gorbunov
1eee1fa803 Swap parameters in File.forEachBlock 2016-02-01 22:09:13 +03:00
Ilya Gorbunov
abe927056b Inline-only in kotlin.comparisons 2016-02-01 22:09:13 +03:00
Ilya Gorbunov
54977ee09a Inline-only in kotlin.io 2016-02-01 22:09:12 +03:00
Ilya Gorbunov
47d580cbc5 Inline-only in kotlin.text 2016-02-01 22:09:11 +03:00
Ilya Gorbunov
56c5758db1 Inline-only in kotlin and kotlin.system packages, split Float/Double extension implementations for JVM and JS to make them inline-only in JVM. 2016-02-01 22:09:10 +03:00
Ilya Gorbunov
40fae0463f Inline-only in kotlin.concurrent, make all timer utilities inline. 2016-02-01 22:09:09 +03:00
Ilya Gorbunov
ce5fd3ee77 Inline-only in kotlin.collections 2016-02-01 22:09:08 +03:00
Ilya Gorbunov
c7bd70732c Inline-only in generated code 2016-02-01 22:09:07 +03:00
Ilya Gorbunov
8c0008aa2e StdLib Generators: support three flavors of inline 2016-02-01 22:09:07 +03:00
Dmitry Jemerov
38b58db4f9 don't apply StandardScriptDefinition in REPL 2016-02-01 19:16:31 +01:00
Dmitry Jemerov
84f9cb9bfd correctly separate stdout and stderr when parsing REPL output 2016-02-01 19:06:17 +01:00
Ilya Gorbunov
3ae4c033b6 Wrap exceptions thrown by class builders and add details about class file being generated. 2016-02-01 19:59:06 +03:00
Michael Bogdanov
5f38c1d571 Fix for KT-10729: Accessing private const field in companion object from a function in the same companion generates run-time error 2016-02-01 18:42:19 +03:00
Michael Bogdanov
9790afb1bd Idea dependency updated to 143.2072 2016-02-01 18:32:13 +03:00
Michael Bogdanov
328b9bfeda Removed old default generation 2016-02-01 18:32:12 +03:00
Pavel V. Talanov
a90f8122bd Fix NPE on trying to compile script files
(There is still no design)
2016-02-01 17:33:46 +03:00
Mikhail Glukhikh
d194af5c4e Correct report of NO_VALUE_FOR_PARAMETER when function call contains no brackets and lambda at the end #KT-7813 Fixed 2016-02-01 17:11:54 +03:00
Mikhail Glukhikh
84100abd9e Annotations on object literals are now correctly resolved #KT-9320 Fixed 2016-02-01 16:24:57 +03:00
Yan Zhulanow
a041414f35 Kapt: compile kotlinAfterJava without Jdk as well in Android projects (KT-10854) 2016-02-01 14:33:02 +03:00
Denis Zharkov
e5f644a64a Temporary disable warning about unchecked reified argument
#KT-10847 Fixed
 #KT-6484 Reopened
2016-02-01 13:36:38 +03:00
Alexey Sedunov
b0c808082f Pull Members Up: Skip visibility checking between members to move 2016-02-01 13:18:47 +03:00
Alexey Sedunov
f9632c1ad6 Pull Members Up: Use light field if property doesnt't have light methods
#KT-10552 Fixed
2016-02-01 13:18:46 +03:00
Alexey Sedunov
e386a6b0e9 Go to Test Action: Make available in the entire class text range
#KT-10757 Fixed
2016-02-01 13:18:45 +03:00
Alexey Sedunov
3e2036b6ec Convert Member to Extension Intention: Drop open/final modifiers, add imports when necessary, transform Java-site calls
#KT-8876 Fixed
2016-02-01 13:18:44 +03:00
Alexey Sedunov
99e4c8c06d Create from Usage: Add commas after enum entries
#KT-10800 Fixed
2016-02-01 13:18:43 +03:00
Alexey Sedunov
26c47cda47 Convert Object Literal to Lambda Intention: Move lambda out of parentheses when possible. Fix after-template
#KT-10778 Fixed
2016-02-01 13:18:41 +03:00
Alexey Sedunov
1c65797950 Intentions: Fix contentRange() on empty KtBlockExpression
#KT-10776 Fixed
2016-02-01 13:18:40 +03:00
Alexey Sedunov
c5b1d205a2 Initialize Property with Constructor Parameter Quick-Fix: Skip secondary constructors with this-delegation. Use containing class as a Change Signature context
#KT-10818 Fixed
2016-02-01 13:18:39 +03:00
Alexey Sedunov
fcbb18d876 Generate equals()/hashCode(): Forbid in interfaces
#KT-10815 Fixed
2016-02-01 13:18:38 +03:00
Alexey Sedunov
58963f7053 Move: Improved file chooser with search
#KT-9752 Fixed
2016-02-01 13:18:37 +03:00
Alexey Sedunov
625bfe12eb Move: Do not create target directory outside of write-action 2016-02-01 13:18:36 +03:00
Alexey Sedunov
222dfd265b Move: Forbid target annotation classes in class chooser 2016-02-01 13:18:35 +03:00
Alexey Sedunov
8e18bf647e Move: Fix refactoring command name 2016-02-01 13:18:34 +03:00
Alexey Sedunov
a05a16c1e6 Move: Fix name lengthening when moving from default package
#KT-10696 Fixed
2016-02-01 13:18:33 +03:00
Alexey Sedunov
d92bfd20d7 Move Class To Upper Level: Fix file name validation 2016-02-01 13:18:31 +03:00
Ilya Gorbunov
4f1418bb72 Verify index expectations for reduceIndexed/reduceRightIndexed 2016-01-31 02:45:05 +03:00
Ilya Gorbunov
1357c77d0b Minor: verify exception type of failed fold/reduce 2016-01-31 02:45:04 +03:00
Gabriel Borges
d58efff974 Add foldIndexed and reduceIndexed groups of functions
- foldIndexed, foldRightIndexed, reduceIndexed and reduceRightIndexed have been added, in line with filterIndexed etc.;
- Test cases added appropriately for the new functions.
2016-01-31 02:45:02 +03:00
Dmitry Petrov
b3f390abe5 Fix KT-10775 Empty when causes compilation exception.
Expression type for an empty 'when' is 'kotlin.Unit'.
2016-01-29 18:50:48 +03:00
Mikhail Glukhikh
dcc6262f47 Regression test #KT-7804 Obsolete 2016-01-29 17:23:40 +03:00
Denis Zharkov
505dc61611 Treat extension receiver as noinline parameter
#KT-9574 Fixed
2016-01-29 14:36:53 +03:00
Denis Zharkov
2cd88b8cbc Make crossinline and noinline incompatible 2016-01-29 14:36:53 +03:00
Denis Zharkov
87741e9b9f Minor. Get rid of redundant diagnostic parameters 2016-01-29 14:36:53 +03:00
Denis Zharkov
855a0b3493 Force type calculation for local function if it should be inferred
It helps to catch TYPECHECKER_HAS_RUN_INTO_RECURSIVE_PROBLEM errors
because they appear after return type calculation began

 #KT-6271 Fixed
 #KT-3272 Obsolete
2016-01-29 14:36:53 +03:00
Denis Zharkov
7d6310d88c Add test for obsolete issue
#KT-9571 Obsolete
2016-01-29 14:36:53 +03:00
Denis Zharkov
36f21932bb Approximate captured type before mapping
#KT-7415 Fixed
2016-01-29 14:36:53 +03:00
Denis Zharkov
5b0fdcb3fe Fix stack overflow caused star projection 2016-01-29 14:36:53 +03:00
Denis Zharkov
6b33e3fb67 Minor. Rename variables and add assertion 2016-01-29 14:36:53 +03:00
Mikhail Glukhikh
4691351e76 Fix for unprocessed lambda under not-null assertion #KT-10843 Fixed
Also #EA-76890 Fixed
2016-01-29 12:57:52 +03:00
Michael Bogdanov
e1fa6491c1 Test for obsolete KT-10044: "Don't know how to generate outer expression for class" with lambda in init block
#KT-10044 Obsolete
2016-01-29 12:42:37 +03:00
Michael Bogdanov
b9c30c739e Test for obsolete KT-7224: Redundant result boxing on ?. call on a primitive
#KT-7224 Obsolete
2016-01-29 12:13:16 +03:00
Michael Bogdanov
c9cc9c55cd Added assertion for super call with default arguments in function default impl body 2016-01-29 11:02:21 +03:00
Mikhail Glukhikh
767729ba2a Regression test #KT-9633 Obsolete 2016-01-29 10:55:22 +03:00
Dmitry Petrov
112e54b35a KT-10752: if (inferred) type for an expression refers to a Java class
non-accessible in the current context, it is a compiler error.
Otherwise we might generate a CHECKCAST instruction that causes IAE at run-time.
Here we are somewhat less permissive then Java
(see inaccessibleType.kt in diagnostics tests).
2016-01-29 10:30:00 +03:00
Dmitry Petrov
1b78d01ae6 Effective visibility issues in FileBasedKotlinClass.
Make exposed nested classes public.
2016-01-29 10:30:00 +03:00
Evgeny Gerashchenko
c242ad94fd Minor. Syntax error cosmetics. 2016-01-29 01:00:47 +03:00
Evgeny Gerashchenko
0d79c65d73 KT-8275 Unterminated multi-line comment should be compilation error
#KT-8275 fixed
2016-01-29 01:00:47 +03:00
Tim Steinbach
7cad65a1e7 Remove which dependency from startup scripts 2016-01-28 21:48:16 +03:00
Alexander Udalov
2a5b4d2c83 Fix annotations on Java elements in reflection
#KT-10840 Fixed
2016-01-28 21:48:16 +03:00
Alexander Udalov
b946d725d7 Filter out methods without return type to fix EA-73795 2016-01-28 21:48:16 +03:00
Alexander Udalov
7e17482698 Delete kotlin-jdk-annotations and kotlin-android-sdk-annotations
They were empty anyway for a long time
2016-01-28 21:48:16 +03:00
Ilya Gorbunov
911940d458 InlineOnly annotation suppresses NOTHING_TO_INLINE diagnostics. 2016-01-28 19:37:44 +03:00
Mikhail Glukhikh
0f1e6ba8be Refactoring: noTypeCheckingErrorsInExpression introduced 2016-01-28 19:30:25 +03:00
Mikhail Glukhikh
ed8ccdc15a Take into account data flow info changes for special call (if/when/elvis/!!) arguments #KT-10824 Fixed
Smart casts on complex expressions look as no more possible
2016-01-28 19:30:20 +03:00
Dmitry Jemerov
7c59592212 Quickfix for "Expression cannot be invoked as a function" with no arguments to remove parentheses
#KT-10825 Fixed
2016-01-28 17:04:44 +01:00
Dmitry Jemerov
6d7e1c69dc remove logic to filter perf output from compiler output 2016-01-28 16:12:56 +01:00
Dmitry Jemerov
6f7aed2601 report perf only if enabled in command line 2016-01-28 16:12:55 +01:00
Mikhail Glukhikh
7fd1f507e4 Additional catch for ReenteringLazyValueComputationException #KT-8448 Fixed
Also #EA-76264 Fixed
2016-01-28 17:52:33 +03:00
Mikhail Glukhikh
5062ce2804 Regression: correct smart cast from Type? to Type! 2016-01-28 17:08:15 +03:00
Mikhail Glukhikh
26a2319d7c ControlFlowBuilder.getExitPoint() now can return null if nothing was found #KT-10823 Fixed
Also #EA-73355 Fixed
2016-01-28 16:19:54 +03:00
Mikhail Glukhikh
c5d6e8edb4 More detailed error message for EA-77641 2016-01-28 16:19:49 +03:00
Mikhail Glukhikh
7c8cdf84fd ControlFlowProcessor: converted to Kotlin #EA-77380 Fixed 2016-01-28 16:19:45 +03:00
Mikhail Glukhikh
59c2a96eb5 ControlFlowProcessor.java --> ControlFlowProcessor.kt 2016-01-28 16:19:41 +03:00
Mikhail Glukhikh
42b6b41378 ControlFlowInstructionsGenerator: converted to Kotlin 2016-01-28 16:19:37 +03:00
Mikhail Glukhikh
80338ecb88 ControlFlowInstructionsGenerator.java --> ControlFlowInstructionsGenerator.kt 2016-01-28 16:19:33 +03:00
Mikhail Glukhikh
6ba171297c ControlFlowBuilderAdapter: converted to Kotlin 2016-01-28 16:19:29 +03:00
Mikhail Glukhikh
5a405f3ddb ControlFlowBuilderAdapter.java --> ControlFlowBuilderAdapter.kt 2016-01-28 16:19:24 +03:00
Mikhail Glukhikh
605da5b7b9 ControlFlowBuilder: converted to Kotlin 2016-01-28 16:19:20 +03:00
Mikhail Glukhikh
41eed948be ControlFlowBuilder.java --> ControlFlowBuilder.kt 2016-01-28 16:19:16 +03:00
Mikhail Glukhikh
171cdfe08a Unnecessary comments removed 2016-01-28 16:19:12 +03:00
Mikhail Glukhikh
1ddaf465cd PseudocodeImpl: converted to Kotlin 2016-01-28 16:19:08 +03:00
Mikhail Glukhikh
381c1c4bba PseudocodeImpl.java --> PseudocodeImpl.kt 2016-01-28 16:19:03 +03:00
Mikhail Glukhikh
1d6eadbd37 Pseudocode: converted to Kotlin 2016-01-28 16:18:59 +03:00
Mikhail Glukhikh
c54f8ebac7 Pseudocode.java --> Pseudocode.kt 2016-01-28 16:18:55 +03:00
Dmitry Jemerov
95683bbf38 remove old API usage inspection 2016-01-28 14:13:57 +01:00
Nikolay Krasko
e79ad386ef Parametrize maven deploy to allow pushing to bintray 2016-01-28 15:03:27 +03:00
Michael Bogdanov
dc2cb401ad KT-10670: Debugger: Evaluate Expression/Watches fail for inline function parameter initialized with default value
#KT-10670 Fixed
2016-01-28 14:23:24 +03:00
Michael Bogdanov
d4df7aaabc Fix for KT-10659: Debugger: Evaluate Expression and Watches fail for inline function parameter passed by reference
#KT-10659 Fixed
2016-01-28 14:23:24 +03:00
Mikhail Glukhikh
069282cb6e Regression test #KT-8277 Can't Reproduce 2016-01-28 13:33:29 +03:00
Mikhail Glukhikh
12b100c541 Regression test #KT-9529 Obsolete 2016-01-28 12:56:12 +03:00
Ilya Gorbunov
6ac52d19ac Move IndexedValue to kotlin.collections. 2016-01-28 12:41:36 +03:00
Natalia Ukhorskaya
54fa9eff61 Debugger: do not compute classnames for inline functions during stepping 2016-01-28 11:16:44 +03:00
Denis Zharkov
e69b115d9a Remove wrong assertion 2016-01-28 08:36:24 +03:00
Denis Zharkov
29c24267fa Fix project compilation
First parameters of `DiagnosticFactory.on` methods are annotated as 'NotNull'
2016-01-28 08:36:24 +03:00
Denis Zharkov
11a96ee8c8 Introduce not null type parameter capability
Java nullability annotations may generate types that currently are not denotable in Kotlin:
class Java {
  void <F> foo(@NotNull F f) {}
}

Type of given value parameter should be not nullable under any substitution:
String/String?/String! because of annotation contract.

NB: Currently there is no full analogues for such types in pure kotlin
2016-01-28 08:36:23 +03:00
Denis Zharkov
08dd675fcd Minor. Drop unused property 2016-01-28 08:36:23 +03:00
Denis Zharkov
8e3bdd6a0f Minor. Rename parameter and get rid of labels 2016-01-28 08:36:22 +03:00
Denis Zharkov
c26ca5e7ef Turn on inference when resolving constructor super-calls
It's only needed when one of candidates has it's own type parameters
Otherwise it does not make sense as arguments are already specified
2016-01-28 08:35:18 +03:00
Denis Zharkov
6542d091ee Support generic constructors defined in Java
#KT-10686 Fixed
 #KT-10410 Fixed
2016-01-28 08:35:18 +03:00
Alexander Udalov
a02d1b75b8 Mark array constructors with 'inline'
To allow non-local returns from lambdas passed to them
2016-01-28 03:10:40 +03:00
Alexander Udalov
70e847b794 Reimplement generation of intrinsic array constructors
Instead of relying on a class from the runtime (which thus cannot be deleted
from the runtime ever), rely on a class from the compiler instead. This has a
minor downside: that class is compiled by the bootstrap compiler, so if codegen
of 'for'-loops or something else used in that class changes, it won't
immediately have an effect on a local working copy (on the build server
everything will be fine because of a 2-step building process).

In the future it may make sense to just manually create all the bytecode
instructions and dump them into a MethodNode. Currently the amount of work
needed for that seems rather significant
2016-01-28 03:10:39 +03:00
Alexander Udalov
0e11aa098f Minor, prettify Kotlin code in source maps 2016-01-28 03:10:39 +03:00
Alexander Udalov
7d880f10ec Optimize getFqName calls in KotlinBuiltIns
Check the simple name first, and only then construct the full FqName, in all
'is*' methods
2016-01-28 03:10:38 +03:00
Alexander Udalov
04026dbe84 Make Array<T>(size, init) a constructor of Array
It's not marked as inline, this is why 'crossinline' was added in
jaggedArray.kt/jaggedDeep.kt. Will be fixed in the following commits
2016-01-28 03:10:37 +03:00
Alexander Udalov
18238bd6f3 Minor, drop DescriptorRendererOptions#prettyFunctionTypes 2016-01-28 03:10:19 +03:00
Alexander Udalov
9e8b6571f4 Make primitive array factory functions constructors 2016-01-28 03:10:19 +03:00
Alexander Udalov
4b03adaa57 Minor, improve AbstractLazyType#toString for debug 2016-01-28 03:10:19 +03:00
Alexander Udalov
0e481a4340 Minor, fix Array kdoc 2016-01-28 03:10:19 +03:00
Ilya Gorbunov
3d468aaab9 Allow call assertFailsWith<T> with default message. 2016-01-28 00:13:51 +03:00
Mikhail Glukhikh
7e26fa6002 One non-processed branch is now allowed for if statement #KT-10805 Fixed
Also #EA-64033 Fixed
2016-01-27 22:44:52 +03:00
Yan Zhulanow
43b176de7e Minor: fix typo 2016-01-27 19:31:45 +03:00
Yan Zhulanow
c6e6547559 Kapt: add Java task classpath to processorpath 2016-01-27 19:31:45 +03:00
Yan Zhulanow
203d9e150b Kapt: Add kapt.kotlin.generated to the supported options list 2016-01-27 19:31:45 +03:00
Yan Zhulanow
bfae2afdb5 Android Extensions: Remove deprecated k.a.s.<layout> convention 2016-01-27 19:31:45 +03:00
Ilya Gorbunov
d49f5b95b0 Fix deprecations in testData 2016-01-27 19:05:19 +03:00
Ilya Gorbunov
eabac9dcf6 Rename measureTimeNano to measureNanoTime 2016-01-27 18:34:33 +03:00
Ilya Gorbunov
d46501e11b Make all remaining deprecations to be errors. 2016-01-27 18:34:32 +03:00
Ilya Gorbunov
263e1b4b5d Drop deprecated mapIndexedTo on Maps. 2016-01-27 18:34:31 +03:00
Ilya Gorbunov
744a7a83f7 Cleanup RC deprecations in compiler and plugin. 2016-01-27 18:34:30 +03:00
Yan Zhulanow
c7a0375c25 Fix AndroidSubplugin applicability check (plain Java Gradle project) 2016-01-27 17:17:47 +03:00
Yan Zhulanow
16958d7a66 Android Extensions: Clear findViewById cache just before RETURN (KT-10720) 2016-01-27 17:17:47 +03:00
Yan Zhulanow
ec4f1b16de Remove obsolete Android Extensions plugin 2016-01-27 17:17:47 +03:00
Yan Zhulanow
32037fdd2e Do not remove all imports if "Optimize Imports" is executed on a file outside source dirs #KT-9925 2016-01-27 17:17:47 +03:00
Yan Zhulanow
4e82fabc7d kapt: Pass Kotlin annotations to process() 2016-01-27 17:17:47 +03:00
Dmitry Petrov
c5fd496cc9 Fix KT-10805 for 'when'. 2016-01-27 17:07:20 +03:00
Dmitry Petrov
9db3440e72 Fix type inference issues for 'if' and 'when'.
Use 'expectedType' (when present) as an explicit type argument for a special construct call.
Unfortunately, this approach can't be used for elvis due to other elvis-related inference hacks.
Fixes KT-10807, KT-10811.
This also affects KT-6189: now we can infer proper type for 'if'.

If type inference for special call failed, and we found no type errors in sub-expressions,
report TYPE_INFERENCE_FAILED_ON_SPECIAL_CONSTRUCT error.
This (and the hack above) fixes KT-10809: code no longer compiles.
2016-01-27 17:07:20 +03:00
Dmitry Jemerov
e3e463ef70 nicer UI for choosing a configurator when multiple options are available 2016-01-27 13:49:45 +01:00
Nikolay Krasko
7c8a5b0b83 Make change signature fix non-applicable for constructors (EA-76554) 2016-01-27 14:00:16 +03:00
Alexey Tsvetkov
8331442661 Fix clause that causes removing deleted files from LookupStorage 2016-01-27 12:31:14 +03:00
Alexey Tsvetkov
0a48d83176 Make LookupStorage thread safe
#KT-10792: Fixed
2016-01-27 12:31:14 +03:00
Alexey Tsvetkov
44b3159867 Move InlineFunctionsMap to IncrementalCacheImpl 2016-01-27 12:28:44 +03:00
Alexey Tsvetkov
2abc422577 Fix updating java mappings for multifile facade 2016-01-27 12:28:44 +03:00
Alexey Tsvetkov
56942930c9 Minor: remove unreachable code 2016-01-27 12:28:44 +03:00
Alexey Tsvetkov
cfc45aa763 Update incremental cache version 2016-01-27 12:28:44 +03:00
Alexey Tsvetkov
a474165a8f Recompile subtypes when class member is changed 2016-01-27 12:28:44 +03:00
Ilya Gorbunov
4296b7f882 Breaking: make copyTo return target file instead of its size. 2016-01-27 00:29:09 +03:00
Ilya Gorbunov
8d02467e6d Introduce plusElement and minusElement to disambiguate situations like List<List<T>> + List<T>
#KT-9992 Fixed
2016-01-27 00:00:01 +03:00
Zalim Bashorov
fb21ef2e1d Use interner in LookupTracker implementations to reduce memory consuming 2016-01-26 23:14:20 +03:00
Dmitry Jemerov
c83b4b3842 clean ZipHandler cache after disposing CoreApplicationEnvironment to avoid storing stale ZipHandlers referring to disposed CoreJarFileSystem instance in ZipHandler.ourFileAccessorCache 2016-01-26 19:51:59 +01:00
Yan Zhulanow
26ed1c3756 Move Android Extensions subplugin to the main kotlin-gradle-plugin artifact 2016-01-26 21:13:37 +03:00
Mikhail Glukhikh
d94930149b Warning for open members in objects 2016-01-26 19:04:17 +03:00
Mikhail Glukhikh
1b8f938260 Report EXPOSED_PROPERTY_TYPE on a property name only #KT-10760 Fixed 2016-01-26 19:04:13 +03:00
Mikhail Glukhikh
b1e3e1c32d A few forgotten checks added for objects (function members effective visibility, multiple varargs) #KT-10753 Fixed 2016-01-26 19:04:08 +03:00
Mikhail Glukhikh
0368631aa3 Source code fix: exposed visibility in object members 2016-01-26 19:04:04 +03:00
Mikhail Glukhikh
22c0ddaa48 Destructuring declaration initializer now cannot use extension componentX() on nullable #KT-7794 Fixed 2016-01-26 19:03:28 +03:00
Mikhail Glukhikh
850dc89b38 For-loop now cannot use extension iterator on a nullable #KT-7428 Fixed 2016-01-26 19:03:23 +03:00
Alexey Sedunov
218dd41a08 Move: More accurate visibility analysis
#KT-10553 Fixed
2016-01-26 18:19:20 +03:00
Alexey Sedunov
64f6c62d4f Move: Implement "Move nested class to another class" UI
#KT-9027 Fixed
2016-01-26 18:19:16 +03:00
Alexey Sedunov
e943508d87 Move: Implement "Move nested class to upper level" UI
#KT-9027 In Progress
2016-01-26 18:19:13 +03:00
Alexey Sedunov
d662b02e95 Move: Nested classes support
#KT-9027 In Progress
2016-01-26 18:19:09 +03:00
Yan Zhulanow
0304bd1dc1 More precise diagnostic messages about "operator modifier is not applicable" 2016-01-26 17:21:44 +03:00
Yan Zhulanow
3fa506fd45 "Inapplicable operator modifier" and "Inapplicable infix modifier" are now errors 2016-01-26 17:21:44 +03:00
Denis Zharkov
f560799bb7 Support top level wildcard types
#EA-73650 Fixed
2016-01-26 16:41:29 +03:00
Nikolay Krasko
5b6f7486ce KotlinSetupEnvironmentNotificationProvider now uses indecies so it not DumbAware anymore (EA-78406) 2016-01-26 16:29:56 +03:00
Nikolay Krasko
d5768dc4ff Fix PsiInvalidElementAccessException in suppression check (EA-71132) 2016-01-26 16:29:55 +03:00
Nikolay Krasko
e7685735bb KtUnaryExpression.baseExpression may be null (EA-78379) 2016-01-26 16:29:53 +03:00
Nikolay Krasko
06939b11e4 Fix NPE in GotoSuperActionHandler.java (EA-77295) 2016-01-26 14:58:44 +03:00
Zalim Bashorov
aebf681809 Rename module "build" -> "build-common" 2016-01-26 14:32:21 +03:00
Denis Zharkov
8ec63bd4dd Use type arguments from supertype when resolving constructor delegation call
#KT-3357 Fixed
2016-01-26 13:53:45 +03:00
Denis Zharkov
8b828f1d9a Use known type substitutor if it exists 2016-01-26 13:53:45 +03:00
Natalia Ukhorskaya
b442cf9fec Debugger: check that virtual machine allows to get bytecodes 2016-01-26 13:36:39 +03:00
Ilya Gorbunov
23080f78f7 Map.getOrPut: treat nulls as missing values. 2016-01-26 11:49:18 +03:00
Ilya Gorbunov
a49db730a9 Map.getOrElse: treat nulls as missing values. 2016-01-26 11:49:17 +03:00
Ilya Gorbunov
90a239e74c Provide toMutableList as a replacement for toArrayList. 2016-01-26 11:49:15 +03:00
Ilya Gorbunov
a709ba4a6e Provide toMap with the destination mutable map to populate.
Tune type projections of map mutating operations.
2016-01-26 11:49:13 +03:00
Ilya Gorbunov
564155734b Introduce associateTo and associateByTo with the destination MutableMap to fill. 2016-01-26 11:49:12 +03:00
Ilya Gorbunov
e41bf687d9 Deprecate toLinkedMap 2016-01-26 11:49:10 +03:00
Ilya Gorbunov
8224a4e186 Rename toMap and toMapBy to associate and associateBy 2016-01-26 11:49:03 +03:00
Ilya Gorbunov
45c9cc4add Breaking: Change File.copyTo contract to be similar to Files.copy from JDK8. 2016-01-26 11:49:02 +03:00
Ilya Gorbunov
67663c43ae Introduce overwrite parameter to File.copyRecursively.
#KT-8924 Fixed
2016-01-26 02:26:33 +03:00
Ilya Gorbunov
d03c174650 Deprecate assertFailsWith with java Class<T> parameter.
#KT-10377
2016-01-26 02:26:33 +03:00
Ilya Gorbunov
28ab9eebbc minor: manual cleanup 2016-01-26 02:26:33 +03:00
Alexander Udalov
36e41554e1 Do not load old metadata annotation in check-library-abi-version.kts
Also do not force recompiling markdown since we've moved to 1.1.0 now
2016-01-25 22:41:45 +03:00
Stanislav Erokhin
e53e152f83 Removed hacks for code migration from ConstraintSystemImpl. 2016-01-25 21:53:09 +03:00
Ilya Gorbunov
7703252239 Provide groupBy and groupByTo with keySelector and valueTransform.
Rename parameters of groupBy, add type parameter for MutableMap to groupByTo.
2016-01-25 21:15:56 +03:00
Ilya Gorbunov
0eaaee8202 StdLib Generators: parse generic function parameters into primitive model 2016-01-25 21:15:19 +03:00
Stanislav Erokhin
210c9ab3db Minor. Added regression tests for: KT-3927, KT-9522, KT-10036, KT-7440, KT-9682, KT-9808, KT-9517, KT-9810, KT-9345. 2016-01-25 19:13:32 +03:00
Stanislav Erokhin
298a075381 Minor. removed functions which declared in Standard.kt from diagnostic testdata.
Removed declaration for functions: TODO, run, with, apply, let.
2016-01-25 19:13:31 +03:00
Stanislav Erokhin
d7438d9f2b Add mock runtime to diagnostic tests.
Mock runtime contains function from file Standard.kt
2016-01-25 19:13:30 +03:00
Nikolay Krasko
6ac73eb760 Remove blocking cache in Kotlin JavaElementFinder (KT-9811)
Attempt to remove cache completely. There's now cache in JavaPsiFacadeImpl.findClass() that probably solves the original problem.
2016-01-25 17:08:22 +03:00
Michael Bogdanov
874560df9d Fix for KT-10715: Verify error on incrementing backing field from accessor 2016-01-25 16:56:57 +03:00
Michael Bogdanov
cf09949354 Fix for KT-10590: IllegalAccessError when protected getter of Java base class is accessed from lambda using property access syntax 2016-01-25 16:56:56 +03:00
Natalia Ukhorskaya
9d66852ae2 J2K: convert method references according to special methods 2016-01-25 15:02:48 +03:00
Natalia Ukhorskaya
25b64b198c Minor: fix NPE 2016-01-25 12:47:45 +03:00
Natalia Ukhorskaya
ba323098ea Debugger: fix EE for localvariables inside inline function call
#KT-10674 Fixed
2016-01-25 12:47:45 +03:00
Natalia Ukhorskaya
203cab8d1b Debugger: fix step over for if with inline function call without lambda arguments 2016-01-25 12:47:45 +03:00
Nikolay Krasko
dbc2299cf2 Update test jar during runtime library update (KT-10773)
#KT-10773 Fixed
2016-01-25 11:37:56 +03:00
Stanislav Erokhin
aca19ed27a KT-10772 Problem with daemon on Idea 15.0.3 & 1-dev-25
# KT-10772 Fixed
2016-01-24 12:29:23 +03:00
Ilya Gorbunov
a78b08d9c7 Use generic coerceIn for nullable primitives, provide specialization for non-nullable ones.
Fix docs for coerceAtMost.
2016-01-24 06:44:13 +03:00
Alexander Udalov
7981e5aa3a Increase metadata version to 1.1, hardcode incompatibility with 1.0
Add a temporary option to suppress incompatibility errors when compiling Kotlin
against current IDEA libraries until they are migrated
2016-01-23 10:00:19 +03:00
Ilya Gorbunov
13b1e91eb5 StdLib Generators: fix type projections, do not use concat. 2016-01-23 05:13:26 +03:00
Alexander Udalov
714df7b433 Add temporary compiler option to suppress incompatibility errors
To compile Kotlin against current IDEA libraries until they are migrated to 1.1
2016-01-22 23:53:47 +03:00
Stanislav Erokhin
f688b1b786 Relax rules for type parameters in property receivers 2016-01-22 22:18:57 +03:00
Stanislav Erokhin
30bb8d4828 Minor. Optimized enhanceSignature method 2016-01-22 22:09:33 +03:00
Stanislav Erokhin
f710ba88f8 Minor. Removed TypeParameterDescriptor#getLowerBounds 2016-01-22 22:09:33 +03:00
Ilya Gorbunov
9a41e07ac0 Use IDEA 143.1960 built with master kotlin branch.
Remove tweaks required to bootstrap packages.
Restore non-star imports of kotlin.text.Charsets.
2016-01-22 22:06:22 +03:00
Alexey Tsvetkov
cfc410261b Minor: fix test data 2016-01-22 21:04:46 +03:00
Mikhail Glukhikh
0ff07af3ef DelegatingDataFlowInfo: potential concurrent modification in multi map fixed 2016-01-22 20:44:58 +03:00
Denis Zharkov
982dfa9183 Minor. Specify variables type explicitly
It's needed because 'assertEquals' has 'OnlyInputType' annotation
on type parameter, and type of 're.exec(string)!!' is 'Array<String?>',
while 'arrayOf("A5D5", "A5", "D5")' is 'Array<String>'
2016-01-22 19:17:22 +03:00
Denis Zharkov
6c0cd70a22 Introduce PureReifiable annotation
It prevents reporting unsafe substitution warning on expressions
like 'arrayOf(arrayOf(""))'
2016-01-22 19:17:22 +03:00
Denis Zharkov
32755a269c Support annotations on type parameters in stub builder 2016-01-22 19:17:22 +03:00
Denis Zharkov
d7e035fd9b Serialize annotations on type parameters in builtins 2016-01-22 19:17:22 +03:00
Denis Zharkov
4cf1393e81 Minor. Render annotations on type parameters 2016-01-22 19:17:22 +03:00
Denis Zharkov
70dc5b5403 Prohibit use of captured type as argument for reified parameter
#KT-8093 Fixed
2016-01-22 19:17:22 +03:00
Denis Zharkov
751f66c656 Report warning on generic type as argument for reified parameter
#KT-6484 Fixed
2016-01-22 19:17:22 +03:00
Denis Zharkov
ae6c62ddff Minor. Report reified-related diagnostics on arguments if possible 2016-01-22 19:17:22 +03:00
Denis Zharkov
5baa0ed4bb Minor. Rename TypeUtils.containsSpecialType -> contains 2016-01-22 19:17:22 +03:00
Denis Zharkov
a5c13ce8cf Approximate projections in SAM type when creating SAM adapter
Use the same approach as Java 8 applies to function types
(see non-wildcard parametrization in §9.9 of JLS)

 #KT-6918 Fixed
2016-01-22 19:17:22 +03:00
Denis Zharkov
d87b13931d Create special type for missing dependencies when resolving annotations
#KT-10748 Fixed
2016-01-22 19:17:22 +03:00
Nikolay Krasko
76f60294a8 Temporary revert old system of source roots for idea-full and intellij-core 2016-01-22 19:01:39 +03:00
Dmitry Jemerov
4846776242 don't show "Kotlin not configured" notification for files outside a source root 2016-01-22 16:42:58 +01:00
Mikhail Glukhikh
e9af4d25d0 Handling of try / catch / finally with 'Nothing' in all catch blocks #KT-10735 Fixed 2016-01-22 16:37:22 +03:00
Mikhail Glukhikh
60f5d9ef8b DelegatingDataFlowInfo: do not create redundant instances 2016-01-22 16:37:19 +03:00
Mikhail Glukhikh
2ee9f22242 DelegatingDataFlowInfo: never store original type or its supertypes #KT-10666 Fixed 2016-01-22 16:37:16 +03:00
Mikhail Glukhikh
e04338f4fa Minor refactoring: DelegatingDataFlowInfo.create() 2016-01-22 16:37:13 +03:00
Mikhail Glukhikh
366ab508e1 Data flow analysis: assignment of null makes variable effectively of type 'Nothing?' 2016-01-22 16:37:10 +03:00
Mikhail Glukhikh
859059d714 Bug fix: jump out of a loop inside if condition 2016-01-22 16:37:07 +03:00
Mikhail Glukhikh
b3c5760eb5 Type intersection fix: T & (final A) is no more calculated as just A #KT-7801 Fixed 2016-01-22 16:37:04 +03:00
Mikhail Glukhikh
3106a8508a Front-end and back-end test for KT-7801 2016-01-22 16:37:00 +03:00
Mikhail Glukhikh
7ac55cefcb Extra test with smart cast to 'T' 2016-01-22 16:36:57 +03:00
Mikhail Glukhikh
d5ffa0bbca DelegatingDataFlowInfo: default constructor 2016-01-22 16:36:54 +03:00
Mikhail Glukhikh
7870ad2445 DataFlowInfo converted to Kotlin, DataFlowInfoFactory introduced 2016-01-22 16:36:51 +03:00
Mikhail Glukhikh
9e1c2f396e DataFlowInfo.java --> DataFlowInfo.kt 2016-01-22 16:36:48 +03:00
Alexey Tsvetkov
f63a9ee556 Optimize adding lookups to lookup storage 2016-01-22 16:01:36 +03:00
Alexey Tsvetkov
f32ff42ba3 Recompile implicit type usages when class signature is changed 2016-01-22 16:01:36 +03:00
Alexey Tsvetkov
310a995bb1 Add lookup for every expression's type 2016-01-22 16:01:36 +03:00
Alexey Tsvetkov
1ef615e020 Add incremental compilation test with change of annotation class 2016-01-22 16:01:36 +03:00
Alexey Tsvetkov
5ce692a75c Improve proto comparison test with changes of annotation list 2016-01-22 16:01:35 +03:00
Alexey Tsvetkov
58a91b3d20 Add proto comparison tests with changes of class/member flags 2016-01-22 16:01:35 +03:00
Alexey Tsvetkov
a7c432ebe8 Add incremental compilation tests with changes of companion object 2016-01-22 16:01:35 +03:00
Alexey Sedunov
618f9f62f6 Code Insight: "Generate toString" action
#KT-10309 Fixed
2016-01-22 15:50:19 +03:00
Alexey Sedunov
77b637e238 Change Signature: Skip Java methods which can't be resolved from Kotlin (such as methods of local classes)
#KT-10432 Fixed
2016-01-22 15:50:17 +03:00
Alexey Sedunov
0104bfec86 Add val/var to Constructor Parameter: Fix caret position before starting template 2016-01-22 15:50:16 +03:00
Alexey Sedunov
8da986ff24 Add Initializer Quick-Fix: Place caret at the end of generated initializer
#KT-10704 Fixed
2016-01-22 15:50:15 +03:00
Alexey Sedunov
9081f5df52 Introduce Variable: Move caret to the end of declaration when replacing "statement" expression
#KT-10663 Fixed
2016-01-22 15:50:14 +03:00
Pavel V. Talanov
16ab4bec34 Try to diagnose NoDescriptorForDeclarationException in completion 2016-01-22 15:32:37 +03:00
Dmitry Petrov
55b7e4bbf0 Ignore special resolved calls for 'when' in PSI unifier. 2016-01-22 10:41:56 +03:00
Dmitry Petrov
a33c840939 Fix Kotlin build after fixing when-related type checking issues.
Filed: KT-10752, KT-10755.
2016-01-22 10:41:55 +03:00
Dmitry Petrov
f371e67ce8 PatternMatchingTypingVisitor:
rewrite type inference for 'when' using special constructs.
This fixes several type inference issues for 'when':
KT-9929, KT-9972, KT-10439, KT-10463
along with some other diagnostics-related issues.
2016-01-22 10:41:55 +03:00
Dmitry Petrov
b49e08fe04 PatternMatchingTypingVisitor:
separate condition data flow info analysis and exhaustiveness check
from type inference for "incomplete" (statement-like) 'when'.
2016-01-22 10:41:55 +03:00
Michael Bogdanov
a76d16931c Temporary generate old default method 2016-01-22 10:10:32 +03:00
Michael Bogdanov
829978a37d Added additional parameter for default methods 2016-01-22 10:10:32 +03:00
Ilya Gorbunov
875287574f Update testData for LoadBuiltinsTest and BuiltInDecompilerTest 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
4d5ec9be3f Drop identityEquals from builtins, compiler and tests. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
f5f5a2dcc1 Move progression final element test to stdlib tests.
Less values are tested for iteration not to timeout in js tests.
2016-01-22 05:54:38 +03:00
Ilya Gorbunov
2a125ca92d Drop deprecated builtins: PropertyMetadata, progression internal utils, HiddenDeclaration and Extension annotations 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
31ec7bcbea Deprecate String.concat with error severity.
Fix concat j2k conversion.
Add expected deprecation errors for Java String constructors that must be converted to special Kotlin String methods.
2016-01-22 05:54:38 +03:00
Ilya Gorbunov
2257fa36ec Drop deprecations: text and system
Fix import in testData
Fix testData: replace removed method.
2016-01-22 05:54:38 +03:00
Ilya Gorbunov
8bf638c60f Drop deprecations: FileTreeWalk deprecated API elements. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
e9c14a02d3 Make FilePathComponents internal, temporary disable tests of internal API 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
c1ad82ff8c Harden charset-as-string taking function deprecations.
Fix usages in compiler.
2016-01-22 05:54:38 +03:00
Ilya Gorbunov
6d5a65cac6 Minor: remove File?.readTextOrEmpty() 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
d728a1a6c7 Replace File.relativePath from stdlib with File.descendantRelativeTo in fileUtils.
IO utils: cleanup java usages.
2016-01-22 05:54:38 +03:00
Ilya Gorbunov
b39b29dfea Drop deprecations: io and threading functions. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
25c4453dc5 Cleanup deprecated symbol usages in testData 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
eefbd72a64 Remove AddStarProjectionsFix for removed javaClass<T> function. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
cbc3a3b595 Make IndexingIterator and IndexingIterable internal. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
9142025df6 Drop deprecations: reflection utilites. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
69f884dcd3 Drop deprecations: preconditions with non-lazy message. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
768a23f7eb Drop deprecations: functions that were converted to properties. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
2813840769 Fix testData: diagnostics changed. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
ef0d998fbc Drop deprecations: *Raw functions. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
d1a5988bfc Drop deprecations: complicated map delegates and kotlin.support.AbstractIterator. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
4f1d2252f0 Make test for replacement, which requires adding import to the package with operator, independent from stdlib. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
d7f8754282 Drop deprecated classes inheriting multifile facade classes moved out of kotlin package. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
473773723b Drop deprecations in kotlin.test 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
85a02d40c6 Drop hidden declarations provided for binary compatibility 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
264c9a0fc9 Drop deprecated toGenerator and toLinkedList (again). 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
b97e436a50 Fix deprecated Range and Progression usages in testData 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
d48ec7e296 Update testData for LoadBuiltinsTest 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
91f4cf0ebc Drop Progression<T> and its deprecated properties: start, end, increment.
Drop deprecated range extensions.
Make progression constructors private.
2016-01-22 05:54:38 +03:00
Ilya Gorbunov
6dd8470835 Drop deprecated primitive ranges and progressions: for Byte and Short 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
e8621cb738 Drop Range<T> interface and its extensions. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
face6d449b Make values in Typography constant, add dollar sign. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
6eabd1d692 Move stdlib classes between packages. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
f4822cd757 Fix testData in compiler: add collections and ranges package to fq-names. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
98e2d27c77 Resolve types from all builtin default packages in TypeUnifierTest 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
c84cbfb36a Allow to specify fq-names in expected resolve testData 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
3262a4ddc2 LoadBuiltinsTest inspects three packages: kotlin, kotlin.collections and kotlin.ranges 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
db9e458cf9 Fix imports in maven kotlin from java usage example. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
46a59b7550 Fix imports in java: temporary replace with star imports. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
0213a129ce Increment STUB_VERSION due to changed fq-names in signatures. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
26a6147a56 Minor: array constructor names formatting. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
1129cee0ff Collect nested classes from all 4 builtin packages. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
e500e4bdf4 Obtain purely implemented interface class descriptor by its fq-name. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
e485bd4909 Fix mutability-flexible types rendering. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
83ef48d0ac Refer to builtin names in HeuristicSignatures and j2k TypeVisitor 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
346291af7b Use fq-names from KotlinBuiltins.FQ_NAMES instead of hardcoded ones. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
9c0f0cad70 Packages: move collections to kotlin.collections. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
9fbbc9db98 Packages: move Ranges, Progression, ProgressionIterators to kotlin.ranges and PrimitiveIterators to kotlin.collections. 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
a3efa1ea6c Temporary allow-kotlin-package for building compiler 2016-01-22 05:54:38 +03:00
Ilya Gorbunov
3176f7d06c Restore downloading IDEA from teamcity, build markdown every time (temporary) 2016-01-22 05:54:38 +03:00
Alexander Udalov
0b7d2e3a68 Do not write old callable proto flags, use only new ones 2016-01-22 05:51:14 +03:00
Ilya Gorbunov
300a4be060 Deprecate Map.minus and minusAssign operators.
Disable tests failing in JS.
2016-01-22 01:13:33 +03:00
Ilya Gorbunov
7896e58afc Rename sequence function to generateSequence 2016-01-22 01:13:31 +03:00
Ilya Gorbunov
63e8865123 Make Lazy an interface open to implementation.
#KT-9287 Fixed
2016-01-22 01:03:18 +03:00
Ilya Gorbunov
dbcad08a35 Regex: MatchResult.groupValues do not exclude zeroth group, use the same indices as in groups collection.
Provide destructured property for destructured assignment.
2016-01-22 00:59:13 +03:00
Ilya Gorbunov
3459a24b0a Regex: Introduce MatchResult.groupValues to get list of numbered group values exlcuding zeroth group with the entire match. 2016-01-22 00:56:08 +03:00
Pavel V. Talanov
1fe749c114 Refactor: get rid of LightClassUtil#getPsiClass() in favor of KtClassOrObject:toLightClass extension 2016-01-21 20:47:22 +03:00
Pavel V. Talanov
2972dbca00 Rename LightClassGenerationSupport.getPsiClass -> getLightClass and make it return KtLightClass 2016-01-21 20:47:21 +03:00
Pavel V. Talanov
06215ca932 Correctly avoid calculation of autogenerated parameter name in ClsParameterImpl.calcName() 2016-01-21 20:47:21 +03:00
Pavel V. Talanov
36d5798a2e Regression test for old issue
#KT-7656 Fixed
2016-01-21 20:47:20 +03:00
Zalim Bashorov
1e6b3c5ae1 Add own PathStringDescriptor to compare paths properly on case-insensitive filesystems 2016-01-21 19:47:10 +03:00
Ilya Chernikov
c585d91e79 Adding generation states destroying to module-based compilation, to fix kapt usage with this compilation path 2016-01-21 19:47:09 +03:00
Ilya Chernikov
3615ca5b02 build.xml: add kotlin-build target 2016-01-21 19:47:08 +03:00
Ilya Chernikov
a61e5a6736 build.xml: add manifest to kotlin-daemon-client.jar 2016-01-21 19:47:07 +03:00
Ilya Chernikov
6198d0abbc Move compiler running utils to common module 2016-01-21 19:47:06 +03:00
Ilya Chernikov
a36e6a2e07 J2K KotlinModuleXmlBuilder: convert 2016-01-21 19:47:05 +03:00
Ilya Chernikov
60892f2b9c J2K KotlinModuleXmlBuilder: rename file 2016-01-21 19:47:04 +03:00
Zalim Bashorov
cc1c5b7e10 Move back classes which used only in JPS 2016-01-21 19:47:04 +03:00
Zalim Bashorov
e2e0167880 Minor: don't override clean in SourceToClassesMap 2016-01-21 19:47:03 +03:00
Ilya Chernikov
5ead2edaa0 Creating shared module "build", copying lookup storage, tracker and incremental cache related files into it from jps plugin 2016-01-21 19:47:02 +03:00
Valentin Kipyatkov
84e530bc1a KT-6079 Show "parameter information" popup for type arguments
#KT-6079 Fixed
2016-01-21 19:07:39 +03:00
Michael Bogdanov
bf16783fb7 Fix for KT-9591: Exception on inlining
#KT-9591 Fixed
2016-01-21 18:44:05 +03:00
Valentin Kipyatkov
53fe1568c9 KT-8529 Code completion for parameter name and type together replaces wrong range on Tab
#KT-8529 Fixed
2016-01-21 18:30:09 +03:00
Valentin Kipyatkov
bc8095ce33 KT-9424 "Exclude from import and completion" with "Project" scope
#KT-9424 Fixed
2016-01-21 18:30:08 +03:00
Alexey Tsvetkov
9bb876e6da Test incremental facade to class conversion and vice versa 2016-01-21 18:16:01 +03:00
Alexey Tsvetkov
94d4dae1fe Recompile all class usages when constructor is changed 2016-01-21 18:14:56 +03:00
Nikolay Krasko
5fcb9ca2bd Add speed to perfomance output 2016-01-21 17:45:51 +03:00
Nikolay Krasko
10648f44ac Do not auto-import convention methods without 'operator' modifier (KT-10212)
#KT-10212 Fixed
2016-01-21 17:45:51 +03:00
Dmitry Jemerov
84d507b770 code review 2016-01-21 15:30:13 +01:00
Dmitry Jemerov
4910b06f2c show "kotlin not configured" editor notification 2016-01-21 15:30:11 +01:00
Dmitry Jemerov
170ba98b20 show unsupported ABI notification only when current module or its dependencies have libraries with bad ABI 2016-01-21 15:30:11 +01:00
Dmitry Jemerov
6f80f36f2e UnsupportedAbiVersionNotificationPanelProvider: fix compilation and cleanup after J2K 2016-01-21 15:30:10 +01:00
Dmitry Jemerov
b1c5d3644e UnsupportedAbiVersionNotificationPanelProvider: J2K 2016-01-21 15:30:10 +01:00
Dmitry Jemerov
e20fdac9df UnsupportedAbiVersionNotificationPanelProvider: rename to .kt 2016-01-21 15:30:09 +01:00
Dmitry Jemerov
2379fd80fc don't show "kotlin not configured" notification for modules where the runtime is outdated 2016-01-21 15:30:08 +01:00
Dmitry Jemerov
85ea295e92 OutdatedKotlinRuntimeNotification: J2K and cleanup 2016-01-21 15:30:08 +01:00
Dmitry Jemerov
ca9979f9fb OutdatedKotlinRuntimeNotification.java: rename to .kt 2016-01-21 15:30:07 +01:00
Dmitry Jemerov
2272516d09 KotlinRuntimeLibraryUtil: J2K 2016-01-21 15:30:07 +01:00
Dmitry Jemerov
f588ef2912 KotlinRuntimeLibraryUtil: rename to .kt 2016-01-21 15:30:06 +01:00
Dmitry Jemerov
6c2a2b91b4 offer "All modules" choice in "Configure Kotlin in project" dialog, allow to invoke the action when there are no Kotlin files in the project
#KT-7979 Fixed
2016-01-21 15:30:05 +01:00
Dmitry Jemerov
4ffac80710 ConfigureKotlinInProjectUtils: convert to Kotlin, cleanup 2016-01-21 15:30:05 +01:00
Dmitry Jemerov
cff06cccf7 ConfigureKotlinInProjectUtils.kt: rename 2016-01-21 15:30:04 +01:00
Dmitry Jemerov
3b4a6afe01 Kotlin-produced test run configurations replace Java-produced ones (to avoid duplicate run configuration suggestions appearing since KtFile.getClasses() was implemented) 2016-01-21 14:46:26 +01:00
Dmitry Jemerov
51799ef70e fix tests on Windows agents: report canonical paths to conflicting Kotlin runtimes 2016-01-21 11:33:32 +01:00
Denis Zharkov
ad24092fd1 Move InlineOnly to kotlin.internal package 2016-01-21 11:26:01 +03:00
Denis Zharkov
ba506170e9 Use 'mapToCallableMethod' for delegateTo signature calculation
#KT-9707 Fixed
2016-01-21 11:24:23 +03:00
Valentin Kipyatkov
3a7ed33de1 KT-10747 "Incompatible stack heights" when compiling call to Java setter with non-void return type using property syntax
#KT-10747 Fixed
2016-01-21 10:48:47 +03:00
Alexander Udalov
d2d0f399db Minor, save parameters to field in ValueArgumentsToParametersMapper 2016-01-21 00:36:35 +03:00
Alexander Udalov
8fe964f269 Resolve array access RHS always as the last argument of the call
Also do not attempt to match any of the arguments in the brackets with the last
parameter of the 'set' method

 #KT-10633 Fixed
2016-01-21 00:36:35 +03:00
Dmitry Jemerov
ccef1ad49e report presence of multiple different versions of kotlin-runtime on the classpath as compilation error if other compilation errors have occurred 2016-01-20 21:02:44 +01:00
Dmitry Jemerov
4f5b2ec4b4 AnalyzerWithCompilerReport: some more cleanup after J2K 2016-01-20 21:00:24 +01:00
Dmitry Jemerov
bf5cdcb6b4 AnalyzerWithCompilerReport: J2K 2016-01-20 21:00:24 +01:00
Dmitry Jemerov
ae1e680319 AnalyzerWithCompilerReport: rename to .kt 2016-01-20 21:00:23 +01:00
Pavel V. Talanov
b34a91eeaa Changes inside init blocks should be considered out of block modifications 2016-01-20 19:02:53 +03:00
Pavel V. Talanov
d72bc78550 Resolve annotations on parameters of function type 2016-01-20 18:06:23 +03:00
Pavel V. Talanov
7d72875227 Create descriptors for parameters inside parameter list of KtFunctionType
Do not throw when trying to resolveToDescriptor those parameters
2016-01-20 18:06:19 +03:00
Michael Bogdanov
23480a5698 Supported inline of array convention simple cases; Fix for KT-9211: M13 an extension function that is inline, and for get(v) causes an exception when called using brackets
#KT-9211 Fixed
2016-01-20 17:33:50 +03:00
Michael Bogdanov
84dbdf2ccb Get rid of ValueParameterDescriptor in 'afterParameterPut' fun 2016-01-20 17:33:49 +03:00
Dmitry Jemerov
aacf2ad68c proguard: keep all JNA methods (some of them are accessed from native code) 2016-01-20 14:34:50 +01:00
Dmitry Jemerov
f88f38f7d2 Android Studio adds Android-Gradle facet to all modules, so we need to check for Android facet and Gradle module instead
#KT-9600 Fixed
2016-01-20 14:32:10 +01:00
Dmitry Jemerov
4ab6436f93 avoid index access in KtFile.getClasses() when the file isn't part of a multi-file class (helps with KT-10684) 2016-01-20 13:45:42 +01:00
Denis Zharkov
ede4b61980 Add tests for obsolete issue
#KT-7412 Obsolete
2016-01-20 14:27:53 +03:00
Denis Zharkov
06fbc9bdd3 Support reification of arrays containing reified parameters
#KT-10555 Fixed
2016-01-20 14:27:53 +03:00
Valentin Kipyatkov
28331bca9f KT-9418 Suggest name for new declaration basing on unresolved names in code
#KT-9418 Fixed
2016-01-20 13:55:56 +03:00
Valentin Kipyatkov
83ca4b84f9 Minor optimization 2016-01-20 13:55:55 +03:00
Alexander Udalov
17e8eafe33 Pass -Xallow-kotlin-package to compiler in project
To compile the 'builtins' module
2016-01-20 00:55:43 +03:00
Valentin Kipyatkov
59fb90a5ee Dropped KtTypedef 2016-01-19 19:31:44 +03:00
Valentin Kipyatkov
808c7453a4 Added test for 'typealias' being keyword 2016-01-19 19:31:44 +03:00
Valentin Kipyatkov
68853fecc3 Removed support for "typealias" declarations from the parser
#KT-10683 Fixed
2016-01-19 19:31:44 +03:00
Valentin Kipyatkov
38d374d4b9 Added test for nested class 2016-01-19 19:30:19 +03:00
Valentin Kipyatkov
2791d99f9d Direct implementation of ImportingScope 2016-01-19 19:30:19 +03:00
Valentin Kipyatkov
d337dff5fa Minor 2016-01-19 19:30:18 +03:00
Valentin Kipyatkov
d749f85a60 Inaccessible classes from the current package to not conflict with visible classes from somewhere else 2016-01-19 19:30:18 +03:00
Valentin Kipyatkov
bfe728526a Alias imports to hide symbols by original name from the current package too 2016-01-19 19:30:18 +03:00
Valentin Kipyatkov
e83bd759e6 Minor 2016-01-19 19:30:18 +03:00
Alexander Udalov
e2f49536f5 Move OldPackageFacadeClassUtils to module light-classes 2016-01-19 18:54:08 +03:00
Alexander Udalov
c78bf6c807 Set bytecode version to 1.0.0
It was 1.0.2 only because it was introduced as a clone of the metadata version,
which is 1.0.2 at the moment
2016-01-19 18:43:07 +03:00
Alexander Udalov
27dbfc7aef Rethrow InvalidProtocolBufferException with class file location info 2016-01-19 18:39:59 +03:00
Alexander Udalov
4d93d18af7 J2K DeserializedDescriptorResolver: prettify 2016-01-19 18:39:59 +03:00
Alexander Udalov
3efa51af40 J2K DeserializedDescriptorResolver: convert 2016-01-19 18:39:59 +03:00
Alexander Udalov
432d458c02 J2K DeserializedDescriptorResolver: rename .java -> .kt 2016-01-19 18:39:59 +03:00
Alexander Udalov
b216ed99b4 Simplify UTF-8 decoding, just trivially convert bytes to 16-bit Unicode
ASM will do the rest (see ByteVector#encodeUTF8)
2016-01-19 18:39:59 +03:00
Alexander Udalov
9620893fa4 Drop synthetic class kind Function, drop Metadata#xi 2016-01-19 18:39:59 +03:00
Alexander Udalov
aef6d49b48 Drop isLocalClass, do not write KotlinLocalClass 2016-01-19 18:39:59 +03:00
Alexander Udalov
e17cd12c3c Report error on generating calls to binary incompatible classes 2016-01-19 18:39:59 +03:00
Alexander Udalov
4bd1d064bb Do not load built-ins in old format, drop class_name extension 2016-01-19 18:39:59 +03:00
Alexander Udalov
625c46d568 Delete obsolete and unused class_annotation JVM proto extension 2016-01-19 18:39:59 +03:00
Alexander Udalov
6dbd29e6a4 Support decoding of both old and new encoded metadata 2016-01-19 18:39:59 +03:00
Alexander Udalov
5585c7da7f Minor, simplify utfEncoding, add option to force using 8to7 encoding 2016-01-19 18:39:59 +03:00
Andrey Breslav
fe15984a59 Direct encoding into UTF-8 bytes, without the 8-to-7-bit conversion 2016-01-19 18:39:59 +03:00
Alexander Udalov
693a9c9453 Write new flags to proto messages for callables
This is needed to get rid of two unused bits: Flags.RESERVED_1 and
Flags.RESERVED_2. The old flags are still there temporarily because of the
bootstrap dependency on built-ins. Soon the old flags will be dropped and the
current flags will be transformed to the new format
2016-01-19 18:39:59 +03:00
Alexander Udalov
86bbc9f15b Read new Metadata annotation in check-library-abi-version.kts 2016-01-19 18:39:59 +03:00
Alexander Udalov
a4daa08e5c Write module name as proto extension instead of another annotation argument 2016-01-19 18:39:59 +03:00
Alexander Udalov
d4c4515944 Refactor BinaryVersion and subclasses, get rid of static factories 2016-01-19 18:39:59 +03:00
Alexander Udalov
e37bd4eba6 Do not write and read KotlinInterfaceDefaultImpls
This was only used in InlineTestUtil.kt and had no effect in the condition
2016-01-19 18:39:59 +03:00
Alexander Udalov
7906ac63b5 Read Metadata annotation, support option to ignore old annotations 2016-01-19 18:39:59 +03:00
Alexander Udalov
59dab0a558 Combine all metadata annotations into one kotlin/Metadata 2016-01-19 18:39:59 +03:00
Alexander Udalov
661af854fa Drop KotlinClassHeader#filePartClassNames, use 'data' instead 2016-01-19 18:39:59 +03:00
Alexander Udalov
b587d3a78d Use JvmMetadataVersion where appropriate instead of bytecode version 2016-01-19 18:39:59 +03:00
Alexander Udalov
bd47e9d47b Split JVM binary version into two: metadata and bytecode interface
Currently all code only uses the first one (JvmMetadataVersion), later the
bytecode interface version (JvmBytecodeBinaryVersion) will be used only in
codegen and reflection to avoid compiling against or calling methods with
unsupported conventions like default method naming and signature,
getters/setters naming etc.
2016-01-19 18:39:59 +03:00
Alexander Udalov
fc88a0186f Drop obsolete synthetic class kind in KotlinClassHeader 2016-01-19 18:39:59 +03:00
Alexander Udalov
9552accaec Introduce BinaryVersion.isCompatible()
To decrease the chance to mix up the receiver and the first argument when
checking version compatibility
2016-01-19 18:39:59 +03:00
Alexander Udalov
04d335db15 Move version constants to corresponding BinaryVersion subclasses 2016-01-19 18:39:59 +03:00
Alexander Udalov
2f64680b63 Add several subclasses of BinaryVersion
To simplify comparison of expected vs actual versions in the future
2016-01-19 18:39:59 +03:00
Yan Zhulanow
4cd2ff040d J2K: convert hex Java literal to hex Kotlin literal 2016-01-19 23:29:58 +09:00
Zalim Bashorov
bd9b2f9f06 Restore logging changes when process them using lookups and add assert to avoid getting parent from root FqName 2016-01-19 16:33:44 +03:00
Mikhail Glukhikh
9360bd49a6 Data flow info: correct disjunction of a type with Nothing: Type U Nothing = Type #KT-9578 Fixed 2016-01-19 16:01:10 +03:00
Mikhail Glukhikh
5d3186ac49 DelegatingDataFlowInfo: converted to Kotlin 2016-01-19 16:01:08 +03:00
Mikhail Glukhikh
4cc2450b37 DelegatingDataFlowInfo.java --> DelegatingDataFlowInfo.kt 2016-01-19 16:01:05 +03:00
Valentin Kipyatkov
a1d760fc36 KT-10631 Consider creating a synthetic property even when the setter returns 'this'
#KT-10631 Fixed
2016-01-19 15:57:20 +03:00
Dmitry Petrov
eef68e0a94 J2K: PatternMatchingTypingVisitor.kt: convert to Kotlin and cleanup 2016-01-19 15:02:45 +03:00
Dmitry Petrov
3e2d9a6a27 J2K: PatternMatchingTypingVisitor.java -> PatternMatchingTypingVisitor.kt 2016-01-19 14:24:09 +03:00
Pavel V. Talanov
ce42d47383 Resolve lambda argument types when failing to resolve call 2016-01-19 14:14:33 +03:00
Nikolay Krasko
adbf098166 Store information is file was compiled with Kotlin in attributes (KT-10312)
- Add boolean attribute for all binary files in the project
- Stop using JarUserDataManager for full file indexing
- Store full header of files compiled with Kotlin in file UserData
2016-01-19 13:33:51 +03:00
Nikolay Krasko
5431c6937f Allow to configure print accuracy and fetch temprory results from profiler 2016-01-19 13:33:51 +03:00
Nikolay Krasko
61bd0e7265 Refactoring: Remove unused class 2016-01-19 13:33:51 +03:00
Nikolay Krasko
803bd55f70 Minor: refactoring 2016-01-19 13:33:51 +03:00
Dmitry Jemerov
f85c4dd458 cleanup KotlinProjectViewProvider 2016-01-19 11:04:10 +01:00
Dmitry Jemerov
52acd34a61 fix Maven build 2016-01-19 10:54:04 +01:00
Dmitry Jemerov
b60621c428 tests fixed 2016-01-19 10:53:53 +01:00
Dmitry Jemerov
39c6e3712b add test to check that "Only the Kotlin standard library is allowed to use the 'kotlin' package" is reported in JPS builds 2016-01-19 10:53:49 +01:00
Dmitry Jemerov
39ad2b2378 return correct exit code when script execution fails 2016-01-19 10:53:48 +01:00
Dmitry Jemerov
f3faa10fcc forbid compiling code in packages with names starting with 'kotlin' unless the -Xallow-kotlin-package command line option is specified 2016-01-19 10:53:47 +01:00
Dmitry Jemerov
6b354748ba KotlinToJVMBytecodeCompiler: cleanup after J2K 2016-01-19 10:53:45 +01:00
Dmitry Jemerov
bccd64de19 KotlinToJVMBytecodeCompiler: J2K 2016-01-19 10:53:44 +01:00
Dmitry Jemerov
0d88595baf KotlinToJVMBytecodeCompiler: rename to .kt 2016-01-19 10:53:43 +01:00
Dmitry Jemerov
e4903c1a47 proguard: don't exclude native libraries when repackaging jna.jar (IDEA core code now accesses FileSystemUtil which uses JNA) 2016-01-19 10:51:21 +01:00
Mikhail Glukhikh
7f2624c9a1 Handling of annotations on delegated property in descriptor loader & stub builder 2016-01-19 11:38:58 +03:00
Mikhail Glukhikh
e4f7446bec JvmSynthetic forbidden for delegated properties (and searched for different use-site targets) 2016-01-19 11:38:53 +03:00
Mikhail Glukhikh
a2bba7c8f1 JvmField forbidden for delegated properties 2016-01-19 11:38:49 +03:00
Mikhail Glukhikh
ec909d0775 Volatile forbidden for delegated properties (and checked for other use-site targets) 2016-01-19 11:38:45 +03:00
Mikhail Glukhikh
b78d481bb1 delegate use-site targeted annotations: parser, front-end, codegen with some tests #KT-10502 Fixed 2016-01-19 11:38:41 +03:00
Mikhail Glukhikh
474076a550 Annotation use-site refactoring: field, property, getter 2016-01-19 11:38:36 +03:00
Denis Zharkov
e9693e987f Humanize type mismatch diagnostic caused by type projections
#KT-10581 Fixed
2016-01-19 11:05:41 +03:00
Dmitry Petrov
0c52960d7a KT-10706: do not report IMPLICIT_CAST_TO_ANY on expressions of type Nothing 2016-01-19 10:50:09 +03:00
Zalim Bashorov
5889ba4293 Minor: extract most of JPS (old IC) specific part from IncrementalCacheImpl 2016-01-18 22:13:29 +03:00
Dmitry Jemerov
f1b5e72b99 always add mavenCentral() as buildscript repository dependency (KT-10342)
#KT-10342 Fixed
2016-01-18 20:09:30 +01:00
Ilya Gorbunov
14f17e76e1 Deprecate dropWhileTo and takeWhileTo on CharSequences. 2016-01-18 21:46:33 +03:00
Ilya Gorbunov
5bbce7a1de Deprecate 'comparator { ... }' in favor of Comparator SAM-constructor. Provide SAM-like constructor for JS. 2016-01-18 21:46:32 +03:00
Ilya Gorbunov
67ef790abc Move comparison related functions to kotlin.comparisons, update imports in stdlib. 2016-01-18 21:46:31 +03:00
Ilya Gorbunov
c250921643 Deprecate getOrImplicitDefault to make it private later. 2016-01-18 21:46:30 +03:00
Ilya Gorbunov
aafd79078f Provide mutableSetOf and mutableMapOf
#KT-9663 Fixed
2016-01-18 21:46:29 +03:00
Ilya Gorbunov
fe8ba4d356 Provide mutableListOf.
Deprecate linkedListOf.
#KT-9663
2016-01-18 21:46:28 +03:00
Dmitry Jemerov
60ca1cbcf3 don't represent Kotlin project view nodes as light classes (KT-10703) 2016-01-18 19:07:51 +01:00
Dmitry Jemerov
8cca34a00e KotlinProjectViewProvider: J2K 2016-01-18 19:00:56 +01:00
Dmitry Jemerov
f4d4ab691b KotlinProjectViewProvider: rename to .kt 2016-01-18 18:58:52 +01:00
Stanislav Erokhin
206fecf872 Possible fix for KT-10603. 2016-01-18 19:45:34 +03:00
Valentin Kipyatkov
4c62304a1d KT-10337 Object marked as unused
#KT-10337 Fixed
2016-01-18 17:40:04 +03:00
Valentin Kipyatkov
4c2a14ff43 KT-9834 Optimizing imports with named import (kinda like static import)
#KT-9834 Fixed
2016-01-18 17:40:03 +03:00
Valentin Kipyatkov
bec16efbd7 Add/remove argument name intentions to work for super class constructor call 2016-01-18 17:40:03 +03:00
Valentin Kipyatkov
c44340a351 Corrections on code review 2016-01-18 15:34:20 +03:00
Valentin Kipyatkov
65f5dd1dd5 Got rid of special methods "applyTo" without editor parameter in intentions 2016-01-18 15:34:20 +03:00
Valentin Kipyatkov
552359ce03 KT-7443 Inspection + intention to replace assert (x != null) with "!!" or elvis
#KT-7443 Fixed
2016-01-18 15:34:20 +03:00
Mikhail Glukhikh
5ad4571ddf 'IMPLICIT_NOTHING_PROPERTY_TYPE' is now an error 2016-01-18 14:04:38 +03:00
Mikhail Glukhikh
380e2dd153 Diagnostic message fixed for 'PRIVATE_SETTER_FOR_OPEN_PROPERTY' 2016-01-18 14:04:34 +03:00
Mikhail Glukhikh
1c789f6862 minor 2016-01-18 14:04:25 +03:00
Dmitry Petrov
a073f29006 KT-10460: use unsubstituted descriptors
while comparing overloaded generic functions  for specificity.
2016-01-18 12:25:04 +03:00
Alexander Udalov
d21ce08548 Minor, remove pointless environment creation in LoadJava test 2016-01-17 22:55:55 +03:00
Alexander Udalov
f88abc5b1f Minor, cleanup InlineTestUtil.kt 2016-01-17 20:00:13 +03:00
Alexander Udalov
d50a531934 Slightly improve bytecode version check during inline
Add class name to the exception message and provide a system property to
disable the check
2016-01-17 16:28:22 +03:00
Alexander Udalov
cf7f2b762f Minor, refactor and simplify RuntimePackagePartProvider
Lazy was unnecessary because we effectively were immediately evaluating it
after creation anyway
2016-01-17 16:28:22 +03:00
Alexander Udalov
0f2befd327 Minor, fix typos in GenerateProtoBufCompare.kt 2016-01-17 16:28:22 +03:00
Alexander Udalov
f6b5c31e39 build.xml: build kotlin-test along with rest of runtime JARs 2016-01-17 16:28:22 +03:00
Alexander Udalov
8c3661c01c build.xml: add option to skip jarjar of reflect 2016-01-17 16:28:22 +03:00
Alexander Udalov
078a53e6a0 Minor, add regression test for KT-10444
#KT-10444 Obsolete
2016-01-17 16:28:22 +03:00
Alexander Udalov
4a31ad0d53 Make PropertyMetadata internal and deprecated with error
To make them inaccessible from Kotlin sources and drop them later. They're
still needed in runtime because Kotlin tests run old IDEA code (which depends
on PropertyMetadata) with our own runtime
2016-01-17 16:28:22 +03:00
Alexander Udalov
d1f2255d38 Extract JS-related LibraryUtils utilities to JsLibraryUtils 2016-01-17 16:28:22 +03:00
Alexander Udalov
f9085327e7 Minor, export kotlin-reflect in 'util'
To allow many modules which depend on 'util' not depend explicitly on
kotlin-reflect
2016-01-17 16:28:22 +03:00
Ilya Gorbunov
57dcbe0aea Cleanup in libraries and tools: use property access syntax. 2016-01-17 15:52:14 +03:00
Ilya Gorbunov
19a4f65fd1 Cleanup in libraries 2016-01-17 15:52:12 +03:00
Ilya Gorbunov
92c2d17910 Cleanup leftovers in compiler and IDE 2016-01-17 15:52:11 +03:00
Ilya Gorbunov
3d5e415c87 Annotate Iterable.forEach and Map.forEach with HidesMembers.
#KT-10538 Fixed
#KT-10479 Fixed
2016-01-16 15:33:12 +03:00
Stanislav Erokhin
133155f4cc Minor. Temporary import forEach as forEachStdLib to avoid problem with introducing HidesMembers annotation 2016-01-16 11:30:38 +03:00
Ilya Gorbunov
56ddd496c5 Hide listFiles as it's no more preferred by overload resolution over synthetic SAM invocations.
#KT-10652 Fixed
2016-01-15 23:53:44 +03:00
Stanislav Erokhin
b185316a6e Create new HidesMembers annotation 2016-01-15 23:32:34 +03:00
Dmitry Jemerov
0c995d0ae1 Merge pull request #808 from mcgee/KT-10196
KT-10196: Suggest to replace 'substring' calls by take/drop/dropLast calls when possible
2016-01-15 19:52:35 +01:00
Dmitry Jemerov
63dd0fc4ae streamlined plugin update logic 2016-01-15 19:18:26 +01:00
Dmitry Jemerov
765d58b8eb plugin autoupdate fixed: always provide plugin descriptor with new version number to plugin downloader 2016-01-15 19:18:26 +01:00
Michael Bogdanov
9cbde911ce Revert of 'Minor. workaround for KT-10679 Wrong outer after inline.' 2016-01-15 18:24:34 +03:00
Michael Bogdanov
7eec1d8e1d Skip inline lambdas in 'InlineCallSite' parameter calculation; Fix for KT-10679: Wrong outer after inline
#KT-10679 Fixed
2016-01-15 18:24:33 +03:00
Pavel V. Talanov
abf4a5cf43 Show kotlin builtIn classes in "go to symbol"
#KT-10474 Fixed
2016-01-15 18:04:59 +03:00
Pavel V. Talanov
af1e83422e Move KotlinGotoClassContributor and KotlinGotoSymbolContributor to a single Kotlin file (j2k on the fly)
Move the file to "goto" package
2016-01-15 18:04:58 +03:00
Pavel V. Talanov
db07d783a2 Member is considered deprecated if it overrides only deprecated members
Property accessor is considered deprecated when the property is
Provide IDE inspection to strikeout members overriding deprecated members (like in java)
2016-01-15 17:53:23 +03:00
Michael Bogdanov
9b3d97470f Prohibit super calls with default parameters 2016-01-15 17:50:48 +03:00
Mikhail Glukhikh
c48c3fc8ed Cleanup: DataFlowAnalyzer, ignore MethodMayBeStatic for SmartCastManager 2016-01-15 17:22:57 +03:00
Mikhail Glukhikh
6157ebe3b8 Separate UNSAFE_IMPLICIT_INVOKE_CALL diagnostics introduced (see KT-8252) 2016-01-15 17:22:54 +03:00
Mikhail Glukhikh
fe11b5a473 Minor 2016-01-15 17:22:50 +03:00
Mikhail Glukhikh
1049d4c53a Nullable function-like property call is prohibited now #KT-8252 Fixed 2016-01-15 17:22:46 +03:00
Mikhail Glukhikh
0f80df7b2e initialDataFlowInfoForArguments introduced in CallExpressionResolver methods #KT-10175 Fixed 2016-01-15 17:22:42 +03:00
Mikhail Glukhikh
16d97ab72c Get rid of MutableDataFlorInfoForArguments.setInitialDataFlowInfo 2016-01-15 17:22:38 +03:00
Mikhail Glukhikh
5ceb973ee9 Minor refactoring of getQualifiedExpressionTypeInfo 2016-01-15 17:22:35 +03:00
Alexander Udalov
bb68aacee4 Minor refactoring in TowerResolver 2016-01-15 17:15:00 +03:00
NataliaUkhorskaya
b73ce68dbd Debugger: quote package fqName properly. Fix muted tests 2016-01-15 15:57:35 +03:00
NataliaUkhorskaya
d4fcb59965 Gradle plugin: fix compatibility with android-gradle plugin 2.0.0-alpha5
#KT-10676 Fixed
2016-01-15 15:56:47 +03:00
Stanislav Erokhin
8f441a020e Minor. workaround for KT-10679 Wrong outer after inline. 2016-01-15 14:44:24 +03:00
Stanislav Erokhin
3a9ecf0bce Change resolution priority about implicit receivers and synthesized member-like descriptors.
Change resolution to consider extensions to implicit receiver before members of another implicit receiver.
Make synthesized member-like extensions resolve right after the members.

#KT-10510 Fixed
#KT-10219 Fixed
2016-01-15 13:11:38 +03:00
Stanislav Erokhin
dee040a5b5 Minor. Extract tower data creation to separate function. 2016-01-15 13:11:37 +03:00
Stanislav Erokhin
dbd6982b3a Move levels to TowerResolver 2016-01-15 13:11:36 +03:00
Denis Zharkov
a2f8ad1396 Minor. Extract constant FQ names 2016-01-15 09:46:30 +03:00
Denis Zharkov
be2f857670 Introduce inline-only functions
They have private visibility in bytecode
2016-01-15 09:46:30 +03:00
Anton Sukhonosenko
b2e98e9353 Suggest to replace 'substring' calls by take/drop/dropLast calls when possible
Code review fixes
#KT-10196 Fixed
2016-01-14 22:40:50 +03:00
Valentin Kipyatkov
15930a42b8 Fixed containingDeclaration for descriptors inside init-blocks for the case of no primary constructor
KT-10226 Wrong Imports optimization ("Unresolved reference" is being added)

 #KT-10226 Fixed
2016-01-14 21:53:41 +03:00
Denis Zharkov
f4613b8db1 Support foreign nullability annotations
#KT-10418 Fixed
 #KT-10594 Fixed
2016-01-14 19:24:10 +03:00
Denis Zharkov
fd8a718797 Get rid of duplicating annotations FQ names usages
E.g. JETBRAINS_NOT_NULL_ANNOTATION were used both in NULLABLE_ANNOTATIONS
and for ANNOTATIONS_COPIED_TO_TYPES
2016-01-14 19:24:10 +03:00
Denis Zharkov
01fd3905be Minor. Fix typo in package name: typeEnhacement -> typeEnhancement 2016-01-14 19:24:10 +03:00
Valentin Kipyatkov
7c6a33a36c KT-10664 No code completion after variable initialized with elvis
#KT-10664 Fixed
2016-01-14 19:23:01 +03:00
Valentin Kipyatkov
b41f2dcda3 KT-10655 No "in" in code completion popup after "!"
#KT-10655 Fixed
2016-01-14 19:23:01 +03:00
Valentin Kipyatkov
2f1108421e Added container information when needed 2016-01-14 19:23:01 +03:00
Denis Zharkov
23d2b87a52 Ignore redundant projections for declaration-site variance 2016-01-14 19:20:00 +03:00
Pavel V. Talanov
06d0a7c17c Avoid throwing on trying to obtain module info by some unexpected light element 2016-01-14 18:35:05 +03:00
Ilya Gorbunov
7ddac1945e Unify functional parameter name for 'let', 'run', 'with', 'apply' scope function with 'use' and 'synchronize'. 2016-01-14 18:31:57 +03:00
Ilya Gorbunov
4eb3cff129 Unify functional parameter name for 'forEachLine', 'forEachBlock', 'repeat' methods with 'forEach' 2016-01-14 18:31:56 +03:00
Ilya Gorbunov
c9ddea6d03 Breaking: File.(buffered)reader/writer now returns less specific InputStreamReader/OutputStreamReader and use UTF-8 encoding by default, allowing to specify different encoding with optional parameter.
File.printWriter supports specifying Charset and uses UTF-8 by default.
#KT-10454 Fixed
2016-01-14 18:31:55 +03:00
Ilya Gorbunov
a64c1ff0f4 Rename defaultBufferSize to DEFAULT_BUFFER_SIZE. 2016-01-14 18:31:43 +03:00
Ilya Gorbunov
d64882e19b File.useLines and Reader.readLines. 2016-01-14 18:30:45 +03:00
Ilya Gorbunov
ddcafdd9b3 J2K: Avoid to convert to deprecated String methods, namely toByteArray. 2016-01-14 18:30:44 +03:00
Ilya Gorbunov
ac15807ba4 Deprecate functions taking charset name as string. 2016-01-14 18:30:42 +03:00
Ilya Gorbunov
68971e2162 Remove redundant JvmName annotations for Array.copyOf, copyOfRange 2016-01-14 18:30:41 +03:00
Ilya Gorbunov
b99e1111f6 Do not use out projection for Array where appropriate. 2016-01-14 18:30:40 +03:00
Ilya Gorbunov
eb5b5331fb Minor: reorder invariant arrays of objects in generated code 2016-01-14 18:30:39 +03:00
Ilya Gorbunov
362e463b26 Preserve type projection for Array.requireNoNulls.
#KT-10039 Fixed
2016-01-14 18:30:37 +03:00
Ilya Gorbunov
90a33fb19c Make return type more specific for File.inputStream and File.outputStream, for String.byteInputStream 2016-01-14 18:30:20 +03:00
Ilya Gorbunov
ea3a2eefe7 File.deleteRecursively returns true even if path specified by File does not exist.
False is returned only in case of incomplete deletion.
Distinguish situations when file was not deleted because it's vanished after listing and because of some other error.
2016-01-14 18:14:12 +03:00
Ilya Gorbunov
5e6489f1a2 Minor: refactor file utils test not to use 'assert' to make test assertions. Use assertTrue, assertFalse, assertEquals, assertFailsWith instead. 2016-01-14 18:14:11 +03:00
Ilya Gorbunov
3ee9c2b9d8 Introduce exitProcess(status) returning Nothing.
#KT-10441 Fixed
2016-01-14 18:14:10 +03:00
Valentin Kipyatkov
5a079defc7 "Rename on import" hides importing of the same symbol by other imports with the original name 2016-01-14 17:05:28 +03:00
Valentin Kipyatkov
47041885ca Do not use incorrect import 2016-01-14 17:05:13 +03:00
Valentin Kipyatkov
866f3f189f Minor 2016-01-14 17:05:13 +03:00
Valentin Kipyatkov
89843685c2 Renamed class 2016-01-14 17:05:13 +03:00
Dmitry Jemerov
af66af07a0 adapt move refactoring to new behavior of KtFile.getClasses() 2016-01-14 14:20:41 +01:00
Dmitry Jemerov
1bc4420734 implement KtFile.getClasses() in plugin (required to have coverage work, among other things) 2016-01-14 14:20:35 +01:00
Michael Bogdanov
607f32615f Type uncapturing 2016-01-14 15:32:50 +03:00
Michael Bogdanov
2228cb6a9a Rollback parameter descriptor propagation to CapturedTypeConstructor 2016-01-14 15:32:50 +03:00
Alexey Sedunov
6e5a2208c0 Misc: Partially revert cleanup (44138f499e) as accessing synthetic properties leads to IllegalAccessError
#KT-10653 Fixed
2016-01-14 13:55:11 +03:00
Alexey Sedunov
1d9bafe196 PSI Unifier: Fix matching of this-expressions
#KT-8293 Fixed
2016-01-14 13:55:10 +03:00
Alexey Sedunov
ed8674c0f9 Safe Delete: Skip usages inside of overriding to-be-deleted declarations
#KT-7253 Fixed
2016-01-14 13:55:09 +03:00
Alexey Sedunov
59bacd932a Minor: Add test for KT-8295 2016-01-14 13:55:08 +03:00
Alexey Sedunov
e7de6400e5 Create from Usage: Make 'Create annotation' low-priority action
#KT-9116 Fixed
2016-01-14 13:55:07 +03:00
Alexey Sedunov
70a851fe44 Move/Change Package Directive Intention: Skip callee references to inner class constructors
#KT-10554 Fixed
2016-01-14 13:55:05 +03:00
Alexey Sedunov
73233b2e90 Change Variable Mutability Quick-Fix: Forbid on non-primary-constructor parameters
#KT-10601 Fixed
2016-01-14 13:55:03 +03:00
Alexey Sedunov
5a108c5cde Generate equals/hashCode Action: Use Arrays.equals/Arrays.hashCode for properties of array types
#KT-10514 Fixed
2016-01-14 13:55:02 +03:00
Natalia Ukhorskaya
7b67eed3dd Qoute package name if needed
#KT-10649 Fixed
2016-01-14 13:42:19 +03:00
Natalia Ukhorskaya
128440b16f Use intention to simplify for in j2k
#KT-7157 Fixed
2016-01-14 13:41:54 +03:00
Natalia Ukhorskaya
ea3ba6f534 Intention to simplify for using destructing declaration 2016-01-14 13:41:45 +03:00
Natalia Ukhorskaya
5667a92472 Debugger: add breakpoint variant for line with lambda in init block
#KT-KT-1061 Fixed
2016-01-14 13:39:01 +03:00
Natalia Ukhorskaya
2b1d60397d Object to lambda intention is inapplicable when reference to this is used
#KT-10202 In Progress
2016-01-14 13:39:00 +03:00
Natalia Ukhorskaya
41e7c3d70b Debugger: generate package parts only for debug file
#KT-10126 Fixed
2016-01-14 13:38:59 +03:00
Mikhail Zarechenskiy
29af6586f2 Get rid of ContainerUtil usages in ide-common 2016-01-14 12:06:52 +03:00
Mikhail Zarechenskiy
dd11fa9320 Move logic related to expression occurrence searching to ide-common 2016-01-14 12:06:50 +03:00
Mikhail Zarechenskiy
bd57096b66 Move AnalyzerUtil to ide-common 2016-01-14 12:06:49 +03:00
Mikhail Zarechenskiy
bde556fc10 Move QuickFixUtil to ide-common 2016-01-14 12:06:47 +03:00
Mikhail Zarechenskiy
85b4f5d593 Move part of resolutionApi to ide-common 2016-01-14 12:06:45 +03:00
Mikhail Zarechenskiy
1523586717 Extract interface out from KotlinCacheService to provide separate implementation in Eclipse plugin 2016-01-14 12:06:44 +03:00
Dmitry Petrov
609ffc10a9 KT-10322, KT-10646, KT-10647:
- update diagnostic to (supposedly) more useful
- also report IMPLICIT_CAST_TO_ANY if expected type is DONT_CARE
 (effectively "no expected type" for lambda expression).
2016-01-14 10:08:20 +03:00
Dmitry Petrov
f54de08073 KT-10646, KT-10647:
Move IMPLICIT_CAST_TO_UNIT_OR_ANY to ControlFlowInformationProvider
(where checks for 'if' and 'when' used as expressions are performed).
2016-01-14 10:08:20 +03:00
Ilya Gorbunov
f91c01919b kotlin.test: 'fail' returns Nothing, 'assertFails' returns Throwable (not nullable).
Js tests now fail at the first failed assertion.
#KT-10289 Fixed
#KT-10369 Fixed
2016-01-14 06:03:40 +03:00
Dmitry Jemerov
8fdd8179b9 Workaround for KtEnumEntrySuperclassReferenceExpression which implements KtSimpleNameExpression in a weird way and can break Move refactoring (EA-75268 - assert: TextRange.<init>) 2016-01-13 20:28:39 +01:00
Zalim Bashorov
c1dbfee2a9 Don't fail when create IncrementalCacheImpl for target without output directory, and fail when try to use this info instead.
#KT-10505 Fixed
2016-01-13 21:37:36 +03:00
Zalim Bashorov
d9af9472f0 Don't fail when output directory not specified for "friend" build target
#KT-10505 Fixed
2016-01-13 21:09:06 +03:00
Zalim Bashorov
3df091e7cf Report error when output directory not specified for build target
#KT-10505 Fixed
2016-01-13 21:09:05 +03:00
Mikhail Glukhikh
6b09c5dfae Minor when missing cases renderer refactoring 2016-01-13 19:54:54 +03:00
Denis Zharkov
b8c79e689b Make all nested inlined closure classes public
#KT-6987 Fixed
2016-01-13 19:41:59 +03:00
Anton Sukhonosenko
ba0efda2f0 Suggest to replace 'substring' calls by take/drop/dropLast calls when possible
#KT-10196 Fixed
2016-01-13 19:05:50 +03:00
Alexey Tsvetkov
328169cd2e Minor: fix test data as exhaustive when error message was changed 2016-01-13 18:47:05 +03:00
Mikhail Glukhikh
e54471abbc Formatting rule: new line before when entry 2016-01-13 18:04:24 +03:00
Mikhail Glukhikh
b7790177e0 KotlinParserDefinition.kt: converted to Kotlin 2016-01-13 18:04:15 +03:00
Mikhail Glukhikh
6ae7309c54 KotlinParserDefinition.java --> KotlinParserDefinition.kt 2016-01-13 17:54:53 +03:00
Alexey Sedunov
2e18ad7160 Remove Right Part of Binary Expression Quick-Fix: Split to separate quick fixes for cast- and elvis-expressions 2016-01-13 17:47:23 +03:00
Alexey Sedunov
6be44f59da Remove Function Body Quick-Fix: Convert to Kotlin & refactor. Add tests with comments 2016-01-13 17:47:22 +03:00
Alexey Sedunov
de8a3c17a2 Remove Function Body Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:21 +03:00
Alexey Sedunov
ed679fef9d Remove Element Quick-Fixes: Convert to Kotlin & refactor 2016-01-13 17:47:20 +03:00
Alexey Sedunov
28a0e8ebe6 Remove Element Quick-Fixes: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:19 +03:00
Alexey Sedunov
9a8aef6b6d Remove Right Part of Binary Expression Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:47:18 +03:00
Alexey Sedunov
0a4a486048 Remove Right Part of Binary Expression Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:17 +03:00
Alexey Sedunov
cac479102a Remove Supertype Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:47:16 +03:00
Alexey Sedunov
2fcce20c73 Remove Supertype Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:15 +03:00
Alexey Sedunov
0fea86c10a Remove 'val'/'var' from Parameter Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:47:14 +03:00
Alexey Sedunov
f2a6805f8b Remove 'val'/'var' from Parameter Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:13 +03:00
Alexey Sedunov
474ab531ea Rename Parameter to Match Overridden Method Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:47:12 +03:00
Alexey Sedunov
c3b3ad52a9 Rename Parameter to Match Overridden Method Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:11 +03:00
Alexey Sedunov
012a36d97c Remove Nullable Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:47:10 +03:00
Alexey Sedunov
f1c38f5f16 Remove Nullable Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:09 +03:00
Alexey Sedunov
111a670d66 Move 'else' Branch in 'when' Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:47:08 +03:00
Alexey Sedunov
212504bbd4 Move 'else' Branch in 'when' Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:07 +03:00
Alexey Sedunov
b8a8f1638f Change Visibility Modifier Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:47:06 +03:00
Alexey Sedunov
1e77caedbc Change Visibility Modifier Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:05 +03:00
Alexey Sedunov
c44d0ed619 Add 'override' to equals/hashCode/toString Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:47:04 +03:00
Alexey Sedunov
96e6319ee1 Add 'override' to equals/hashCode/toString Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:03 +03:00
Alexey Sedunov
64eeaf8b9d Make Class an Annotation Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:47:02 +03:00
Alexey Sedunov
04b8f16576 Make Class an Annotation Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:47:01 +03:00
Alexey Sedunov
6c44aa4d76 Change to Function Invocation Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:47:00 +03:00
Alexey Sedunov
584d3ad374 Change to Function Invocation Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:46:59 +03:00
Alexey Sedunov
a7a5619523 Change to Star-Projection Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:46:58 +03:00
Alexey Sedunov
625967fc15 Change to Star-Projection Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:46:57 +03:00
Alexey Sedunov
3153196343 Change Type Quick-Fix: Convert to Kotlin & refactor. Wrap in delegating quick fix to decrease memory footprint 2016-01-13 17:46:56 +03:00
Alexey Sedunov
11ef780adf Change Type Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:46:55 +03:00
Alexey Sedunov
05506a24d7 Add Star Projections Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:46:54 +03:00
Alexey Sedunov
2e25d2d885 Add Star Projections Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:46:53 +03:00
Alexey Sedunov
a696efc3ef Change Accessor Type Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:46:52 +03:00
Alexey Sedunov
54b149ce71 Change Accessor Type Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:46:51 +03:00
Alexey Sedunov
4e54cee693 Cast Expression Quick-Fix: Convert to Kotlin & refactor. Wrap in delegating quick fix to decrease memory footprint 2016-01-13 17:46:49 +03:00
Alexey Sedunov
63ab9df275 Cast Expression Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:46:48 +03:00
Alexey Sedunov
7cb5bc8902 Add Else Branch to When Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:46:47 +03:00
Alexey Sedunov
c0ca4e6b79 Add Else Branch to When Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:46:46 +03:00
Alexey Sedunov
f8be2f23a1 Add Function Body Quick-Fix: Convert to Kotlin & refactor 2016-01-13 17:46:45 +03:00
Alexey Sedunov
50497e8013 Add Function Body Quick-Fix: Convert to Kotlin (rename to .kt) 2016-01-13 17:46:43 +03:00
Alexey Sedunov
8264cef004 Quick Fixes: Pass original element to KotlinIntentionActionFactoryWithDelegate.createFix() 2016-01-13 17:46:42 +03:00
Michael Bogdanov
66ab1c484c StackOverflow fix on type remapping 2016-01-13 16:57:36 +03:00
Alexey Tsvetkov
94cea25e2e Recompile all sealed class usages when new derived class is added 2016-01-13 15:46:54 +03:00
Alexey Tsvetkov
0cf2928761 Recompile all enum usages when new entry is added 2016-01-13 15:46:54 +03:00
Alexey Tsvetkov
e7f8d7103f Recompile all class and member usages when flag and member are changed 2016-01-13 15:46:53 +03:00
Alexander Udalov
b0627b4ce6 Minor, add system property to suppress color output in CLI 2016-01-13 14:24:42 +03:00
Mikhail Glukhikh
c3cce53aa2 Quick fix "add when remaining branches" refactoring + enum / sealed generated name w/o package name 2016-01-13 12:32:14 +03:00
Valentin Kipyatkov
0a3631db6a Fixed KT-10602 Incorrect completion for class name
#KT-10602 Fixed
2016-01-12 22:09:12 +03:00
Nikolay Krasko
12b9002c0e Remove assert that isn't valid in UpSource (UP-5742) 2016-01-12 21:40:11 +03:00
Dmitry Jemerov
7390e0ac66 editor is nullable in SelfTargetingIntention.applyTo() 2016-01-12 19:23:51 +01:00
Pavel V. Talanov
9bfa90dc0e Analyze local variable declarations in expression position
Fixes exception on invalid code "val c = 1 < val Int.f: Int = 3"
2016-01-12 19:31:16 +03:00
Pavel V. Talanov
060864f7af Minor: prettify code after autoconversion 2016-01-12 16:47:38 +03:00
Pavel V. Talanov
94ce1d1193 Refactor: extract type checking code for local variables to a separate component, extract code that creates descriptors for local variable out of DescriptorResolver 2016-01-12 16:47:31 +03:00
Pavel V. Talanov
9fea22885e AnnotationUtil: Do not throw on ErrorValue constant 2016-01-12 16:08:59 +03:00
Michael Bogdanov
657b9ff808 Write enclosing method info for transformed objects 2016-01-12 15:51:57 +03:00
Michael Bogdanov
8ab1190082 Don't try remap type parameter of inline lambda parent context 2016-01-12 15:51:57 +03:00
Michael Bogdanov
fee6d4f282 Type parameters mapping
#KT-10429 Fixed
2016-01-12 15:51:56 +03:00
Michael Bogdanov
5cdf170511 TypeRemapper.java -> TypeRemapper.kt 2016-01-12 15:51:56 +03:00
Michael Bogdanov
cb41f1cc2a Signature remapping moved to RemappingSignatureAdapter inside TypeRemapper 2016-01-12 15:51:55 +03:00
Michael Bogdanov
dd336a5581 ReifiedTypeParameterMappings renamed to TypeParameterMappings, add isReified property 2016-01-12 15:51:55 +03:00
Michael Bogdanov
833cdb0706 TypeParameterDescriptor propagation to CapturedTypeConstructor 2016-01-12 15:51:54 +03:00
Mikhail Glukhikh
0bcae4e0c0 Build fix: nullable exhaustiveness checker is now only a part of other exhaustiveness checkers 2016-01-12 15:44:55 +03:00
Alexey Tsvetkov
d928ac744e Make withSubtypesOf more efficent 2016-01-12 15:32:48 +03:00
Alexey Tsvetkov
756c78bfcc Append in a more safe way 2016-01-12 15:32:47 +03:00
Alexey Tsvetkov
f137910e63 Make doProcessChangesUsingLookups extension again 2016-01-12 15:32:47 +03:00
Alexey Tsvetkov
f20b39d02e Use one loop for changes processing 2016-01-12 15:32:47 +03:00
Alexey Tsvetkov
d36810ab42 Minor: rename getSubtypeOf->withSubtypes 2016-01-12 15:32:47 +03:00
Alexey Tsvetkov
9190029fcc Add tests for class hierarchy incremental recompilation 2016-01-12 15:32:47 +03:00
Alexey Tsvetkov
e2794cfa3f Do not write inline calls to cache when experimental incremental compilation is enabled 2016-01-12 15:32:47 +03:00
Alexey Tsvetkov
2286268929 Append to class map should use IOUtil.writeUTF 2016-01-12 15:32:47 +03:00
Alexey Tsvetkov
a9fb5647b8 Get caches for targets transitively for exported dependencies 2016-01-12 15:32:46 +03:00
Alexey Tsvetkov
dfc08b8f38 Process changed signatures of classes 2016-01-12 15:32:46 +03:00
Alexey Tsvetkov
ab13b2ddfc Minor: move processChanges 2016-01-12 15:32:46 +03:00
Mikhail Glukhikh
8b6156abd6 Quick fix "Add remaining when branches" with some tests 2016-01-12 14:33:20 +03:00
Mikhail Glukhikh
44b07d8dfa Refactoring: context instead of trace in WhenChecker and around 2016-01-12 14:19:29 +03:00
Mikhail Glukhikh
936fee0afa KT-10295: long enum (sealed) special case 2016-01-12 14:18:36 +03:00
Mikhail Glukhikh
c085eb650f Better diagnostics for non-exhaustive whens, relevant test #KT-10295 Fixed 2016-01-12 14:18:23 +03:00
Mikhail Glukhikh
61c2a88a32 Separate when exhaustiveness checkers with list of missing cases as result 2016-01-12 14:07:08 +03:00
Mikhail Glukhikh
a99b2a6799 J2K: WhenChecker converted to Kotlin 2016-01-12 11:17:09 +03:00
Mikhail Glukhikh
e59fed7d9b J2K: WhenChecker 2016-01-12 11:17:06 +03:00
Dmitry Jemerov
682a61ad26 use PARTIAL_FOR_COMPLETION resolve mode when checking whether reference will resolve to the property, otherwise we're going to miss local variables which shadow the property 2016-01-11 19:05:37 +01:00
Dmitry Jemerov
76c9bbc06d handle setter calls used as expression bodies in "Use property access syntax" intention
#KT-10587 Fixed
2016-01-11 18:53:07 +01:00
Dmitry Jemerov
36488d21da remove empty modifier list after removing visibility modifier 2016-01-11 18:46:04 +01:00
Dmitry Jemerov
d0a4e542af use StubIndex.getElements() with required class specified to diagnose CCE problems when using stub index 2016-01-11 16:29:41 +01:00
Pavel V. Talanov
8d22eafe3f Minor: prettify code 2016-01-11 16:33:20 +03:00
Pavel V. Talanov
41a8ded182 getting rid of ClsFileImpl.setPhysical
patch by Roman Shevchenko
2016-01-11 16:29:19 +03:00
Michael Bogdanov
0274ce4619 Always generate ACC_SUPER flag for all classes; Fix for KT-10260: java.lang.VerifyError in Android 4.x when Instant Run is used
#KT-10260 Fixed
2016-01-11 09:55:56 +03:00
Dmitry Jemerov
b11acdfbea regenerate builtins (don't remove 'public' modifiers until we agree that we don't want them in stdlib) 2016-01-08 16:01:34 +01:00
Dmitry Jemerov
f885459a43 fix compilation after cleanup 2016-01-08 16:01:28 +01:00
Dmitry Jemerov
5d3ba1ad6c remove "public" from generated code template 2016-01-08 16:01:26 +01:00
Dmitry Jemerov
d5903c5374 workaround for KT-10590: ensure that the inherited getProject() method is public, not protected 2016-01-08 16:01:20 +01:00
Dmitry Jemerov
44138f499e plugins: cleanup 'public', property access syntax 2016-01-07 18:15:44 +01:00
Dmitry Jemerov
d6a11b839b js: cleanup 'public', property access syntax 2016-01-07 18:15:19 +01:00
Dmitry Jemerov
33ef7ad024 jps-plugin: cleanup 'public', property access syntax 2016-01-07 18:14:31 +01:00
Dmitry Jemerov
6684dff14b j2k: cleanup 'public', property access syntax 2016-01-07 18:13:10 +01:00
Dmitry Jemerov
43a6e13f4b idea: cleanup 'public', property access syntax 2016-01-07 18:12:36 +01:00
Dmitry Jemerov
4afbf02bdd generators: cleanup 'public', property access syntax 2016-01-07 18:07:13 +01:00
Dmitry Jemerov
951a313331 eval4j: cleanup 'public', property access syntax 2016-01-07 18:03:29 +01:00
Dmitry Jemerov
3870bd04b8 core: cleanup 'public', property access syntax 2016-01-07 18:03:09 +01:00
Dmitry Jemerov
117a0d8b7b compiler: cleanup 'public', property access syntax 2016-01-07 17:57:38 +01:00
Dmitry Jemerov
b72ea1ff07 ant: cleanup 'public', property access syntax 2016-01-07 17:53:32 +01:00
Dmitry Jemerov
e47e9f6763 inspection and code cleanup for redundant visibility modifiers 2016-01-05 13:31:43 +01:00
Dmitry Petrov
b736880787 KT-6646, KT-10482:
when a method (or a property getter) returns Nothing, emit
  ACONST_NULL
  ATHROW
after a call so that class files verifier knows that this is an exit point in a method.
Note that if an inline method returning Nothing throws an exception explicitly
(or via a chain of inline methods), this code will be deleted by DCE.
2015-12-31 11:07:56 +03:00
Nikolay Krasko
ffd1bcf72f Update icons (KT-10516)
#KT-10516 Fixed
2015-12-30 17:26:34 +03:00
Nikolay Krasko
f9a6da05df Add explicit type (local builds othen fail here) 2015-12-30 17:26:06 +03:00
Nikolay Krasko
0518c6f618 Set "No" as default button 2015-12-30 17:19:16 +03:00
Natalia Ukhorskaya
ad9303b97b Support breakpoints in anonymous objects with usages of cross inline argument 2015-12-30 14:49:30 +03:00
Natalia Ukhorskaya
754b02aa3c Fix EA-76946 - IOOBE: LineSet.checkLineIndex: do not try to get line start offset for line out off document 2015-12-30 14:49:29 +03:00
Natalia Ukhorskaya
0a6dbc91ae Fix EA-75128 - KNPE: IdentifierKt.declarationIdentifier 2015-12-30 14:49:29 +03:00
Natalia Ukhorskaya
5c83e2ac5b KotlinSyntheticTypeComponentProvider: catch UnsupportedOperationException
#KT-10526 Fixed
2015-12-30 14:49:28 +03:00
Natalia Ukhorskaya
36d154babf Support breakpoints for inline function with cross inline argument 2015-12-30 14:49:27 +03:00
Natalia Ukhorskaya
c351293394 KotlinPositionManager: drop PositionElement, classNameForPosition now returns collection of names 2015-12-30 14:49:26 +03:00
Natalia Ukhorskaya
e8aef7d29e Minor: move methods from companion object 2015-12-30 14:49:26 +03:00
Natalia Ukhorskaya
3678bda409 InlineUtil: extract method 2015-12-30 14:49:25 +03:00
Michael Bogdanov
1d70b58d17 Fixed test data 2015-12-30 14:42:12 +03:00
Michael Bogdanov
11268331a8 Added '@' for annotation names in diagnostic messages 2015-12-30 12:25:13 +03:00
Dmitry Petrov
74c13906ed Drop "substitute with upper bounds" mode for calls with mapped arguments
(we don't need it since we build constraint system for generic types).
Cleanup tests.
2015-12-30 10:44:01 +03:00
Dmitry Petrov
4b3290dd8c Check specificity relation for generant types of the constraint system.
Otherwise we can't properly chose between 'dynamic' and generic type.
2015-12-30 10:44:00 +03:00
Dmitry Petrov
c97294a066 stdlib fixes:
- 'sequence(initialValue: T?, ...)' should have LowPriorityInOverloadResolution
(otherwise 'sequence({...}, {...})' is ambiguous).
- 'copyOf' and 'copyOfRange' should be defined for 'Array<T>' only
('Array<out T>' version always loses to 'Array<T>', since the second one
is always more specific).
2015-12-30 10:44:00 +03:00
Dmitry Petrov
02daeac41b Use constraint system for comparing for specificity against a generic signature.
Drop "discrimiate generics" mode where it's unneeded.
2015-12-30 10:44:00 +03:00
Alexey Sedunov
aeefdffaab Implement Abstract Member Intention: Support primary constructor parameters
#KT-8427 Fixed
2015-12-30 00:56:34 +03:00
Alexey Sedunov
2b4f03feef Implement Members Quick-Fix: Support primary constructor parameters
#KT-8427 In Progress
2015-12-30 00:56:34 +03:00
Alexey Sedunov
00cc9d4150 Specify Type Explicitly: Filter out types which can't be resolved in the target scope
#KT-10066 Fixed
2015-12-30 00:56:34 +03:00
Alexey Sedunov
21fd894d75 Create From Usage: Place caret at the end of initializer selection
#KT-10120 Fixed
2015-12-30 00:56:34 +03:00
Alexey Sedunov
c391882651 Minor: Fix NPE (EA-76742) 2015-12-30 00:56:34 +03:00
Alexey Sedunov
5b5e7fb9b7 'Change parameter type' Quick-Fix: Use Change Signature API
#KT-9812 Fixed
2015-12-30 00:56:34 +03:00
Alexey Sedunov
9180a99342 Convert to Kotlin: ChangeParameterTypeFix.java 2015-12-30 00:56:34 +03:00
Alexey Sedunov
3af7c7b57a Convert to Kotlin: ChangeParameterTypeFix.java (rename to .kt) 2015-12-30 00:56:34 +03:00
Pavel V. Talanov
004c266433 Minor: fix missed error marker in test data 2015-12-29 18:13:10 +03:00
Ilya Gorbunov
0aef321c73 Cleanup in idea plugin, src and tests 2015-12-29 18:04:24 +03:00
Ilya Gorbunov
145722b20d Cleanup in idea plugin modules, misc 2015-12-29 18:04:23 +03:00
Ilya Gorbunov
865fdd7962 Cleanup in idea plugin modules, idea-core 2015-12-29 18:04:22 +03:00
Ilya Gorbunov
6ffc407158 Cleanup in idea plugin modules, idea-completion 2015-12-29 18:04:21 +03:00
Ilya Gorbunov
be590312f7 Cleanup in idea plugin modules, idea-analysis 2015-12-29 18:04:20 +03:00
Ilya Gorbunov
bce9514739 Cleanup in idea plugin modules, ide-common 2015-12-29 18:04:19 +03:00
Ilya Gorbunov
fcfb063eca Cleanup in modules: j2k, jps, ant and generators. 2015-12-29 18:04:18 +03:00
Ilya Gorbunov
da4b1ae0fb Cleanup in js modules 2015-12-29 18:04:16 +03:00
Ilya Gorbunov
80916d5ed7 Cleanup in compiler modules 2015-12-29 18:04:15 +03:00
Ilya Gorbunov
911adfd04d Cleanup in core modules 2015-12-29 18:04:14 +03:00
Ilya Gorbunov
b71b336a69 Fix fq names of moved facade classes in imports and other code occurrences 2015-12-29 18:04:13 +03:00
Nikolay Krasko
f9944e28b0 Show full library panel. Add warning on attempt to create project without library. 2015-12-29 18:01:15 +03:00
Michael Bogdanov
d54c3f4fc7 Added '@' to annotation names in diagnostic messages 2015-12-29 17:20:16 +03:00
Michael Bogdanov
91f27ba176 Report error on 'JvmStatic' annotation on const or @JvmField property
#KT-10415 Fixed
2015-12-29 17:20:07 +03:00
Michael Bogdanov
ae4ca3b5bb Report JvmStatic diagnostic on primary constructor properties 2015-12-29 16:45:24 +03:00
Michael Bogdanov
bb63bcd520 Removed obsolete tests 2015-12-29 16:45:24 +03:00
Michael Bogdanov
e671d05105 Companion public val annotated with @JvmFIeld or const 2015-12-29 16:45:23 +03:00
Michael Bogdanov
e116cc3206 Private visibility for non-const, non-jvmField class companion property backing field 2015-12-29 16:45:22 +03:00
Michael Bogdanov
85ae0cb78e Restrict companion properties copying to interface by const 2015-12-29 16:45:22 +03:00
Pavel V. Talanov
6f0c2a0260 Project configuration: Add source directories for kotlin builtIns to KotlinRuntime 2015-12-29 15:57:02 +03:00
Pavel V. Talanov
9096a443ea Do not build light classes for local classes when the there is no class descriptor
These cases should be dealt with and this is only a way to degrade gracefully
2015-12-29 15:57:01 +03:00
Pavel V. Talanov
b38fc7b3c1 Parse local interfaces in expression position 2015-12-29 15:57:00 +03:00
Pavel V. Talanov
1c4d4f3e36 Create class descriptors for local classes in illegal positions
Typecheck code in illegal selector position
Fixes exceptions on "val p = A.class" erroneous code
2015-12-29 15:56:44 +03:00
Pavel V. Talanov
06e829936e Fix codegen predictor for properties and property accessors 2015-12-29 12:32:14 +03:00
Pavel V. Talanov
4f5f56e4a5 Add and use KtPropertyAccessor#getProperty() 2015-12-29 12:32:12 +03:00
Denis Zharkov
d511059cfa Unify code generation of as/is operation
They should be the same for common and reified cases
2015-12-28 18:32:15 +03:00
Denis Zharkov
da53d8cbf4 Replace reified operations instanceof/checkcast with is/as
It's more consistent with how they effectively work
2015-12-28 18:31:40 +03:00
Denis Zharkov
87b6374351 Get rid of redundant intrinsic
Also drop 'safe' parameter from TypeIntrinsics.checkcast,
because it's supposed to work as JVM checkcast (i.e. accepting nulls)
2015-12-28 18:31:40 +03:00
Denis Zharkov
39bbd7c795 Rework reified markers format
Use integer operation identifier instead of method name to differentiate
reified operations
2015-12-28 18:31:40 +03:00
Alexander Udalov
890c961383 Fix reflection internal error on enum nested classes query
#KT-10520 Fixed
2015-12-28 16:40:34 +03:00
Denis Zharkov
688a1b6305 Adjust type approximation to broken code and missing dependencies
- Do not run approximation if arguments number is different
- Add nullable Any? as supertype to MissingDependencyErrorClass

The latter is needed because otherwise TypeArgument.isConsistent became false
2015-12-28 11:13:39 +03:00
Denis Zharkov
722a152a74 Fix supertypes calculation for types with projections
Use captured types as replacement for non top-level entries

 #KT-7296 Fixed
2015-12-28 11:13:39 +03:00
Denis Zharkov
397d2ca312 Fix captured approximation for case of flexible types
#KT-9294 Fixed
2015-12-28 11:13:38 +03:00
Denis Zharkov
b6edddbe8b Make project compilable after member scope refinement 2015-12-28 11:13:38 +03:00
Denis Zharkov
ec0ec55ab5 Replace type entries of JsContext<*> with JsContext<JsNode>
It's needed to make method calls (e.g. replaceMe) on it typesafe,
otherwise it's value parameter type is subtype of captured
2015-12-28 11:13:37 +03:00
Denis Zharkov
9773e98d8a Refine type from property setter parameter on assignment
In most cases these types are equals, the only known exception is
var-property contained in projected type member scope (see test data)
2015-12-28 11:13:37 +03:00
Denis Zharkov
e2c02f825f Refine member scope for types with projections
Instead of erasing descriptors with conflicting substitution,
use invariant CapturedType(<projection>) as replacement for type parameter
within default member scope.

After substitution leave such types 'as is' everywhere except return types,
use common approximation for them.

 #KT-9294 In Progress
 #KT-5411 Fixed
 #KT-8647 Fixed

 #KT-9462 Fixed
 #KT-9893 Fixed
 #KT-7581 Fixed
 #KT-7296 In Progress
2015-12-28 11:13:37 +03:00
Denis Zharkov
365ff593f3 Extract and normalize member scope calculation
Basically it's wrong to use original types' member scope
as a worker for SubstitutionScope.
Member scope should always be determined by type constructor's default one
and substitution/arguments

 #KT-10448 Fixed
2015-12-28 07:44:56 +03:00
Denis Zharkov
58caff3411 Minor. Add tests checking not-null assertions
More precisely these tests check cases when expected type
was somehow obtained from captured type (in member scope with projections)
2015-12-28 07:44:56 +03:00
Denis Zharkov
7aaa6422b4 Introduce CustomSubstitutionCapability.substitutionToComposeWith
Mainly it's needed to prevent creation of subsituions composition
everytime we replacing arguments, because it's both unoptimal and wrong

When replace arguments in `A<E, F>` with <String, E> you got `A<String, String>`
as a result, that is unexpected.

But composition is only needed when previous substituion was abnormal
(e.g. RawSubsitution that should actually wrap new arguments), see RawTypes tests
2015-12-28 07:44:55 +03:00
Denis Zharkov
8d0a90a838 Preserve type capabilities of captured type 2015-12-28 07:44:55 +03:00
Denis Zharkov
e7dbcfe21f Minor. Cleanup code 2015-12-28 07:44:54 +03:00
Denis Zharkov
555286849e Minor. Move declaration closer to usages and optimize imports 2015-12-28 07:44:54 +03:00
Denis Zharkov
48b89a5db7 Replace unchecked 'is' on local class with unchecked 'as'
It became unchecked after latest changes (see parent commit)
2015-12-28 07:44:54 +03:00
Denis Zharkov
3fd35636ad Fix type parameter list for local classes
Add captured parameters from enclosing functions

 #KT-9584 Fixed
2015-12-28 07:44:53 +03:00
Denis Zharkov
73b961e885 Clean project code after #KT-3996 fix
No overload resolution ambiguity in smart-casts
2015-12-28 07:44:53 +03:00
Mikhail Glukhikh
0cc09872b6 Implicit exhaustive when annotation / highlighting 2015-12-26 10:46:44 +03:00
Mikhail Glukhikh
7d6ccc40c2 Implicit exhaustive whens now have exception in else branch #KT-8700 Fixed 2015-12-26 10:46:39 +03:00
Mikhail Glukhikh
011a9f23b9 Implicit exhaustive when check for definite variable initialization (KT-8700) 2015-12-26 10:46:35 +03:00
Mikhail Glukhikh
52c3fb03a2 ControlFlowInfo introduced to store variable states, related refactoring 2015-12-26 10:46:30 +03:00
Mikhail Glukhikh
0f3997c6ca InitState / VariableUseState / VariableControlFlowState moved to a separate file 2015-12-26 10:46:25 +03:00
Mikhail Glukhikh
4c4456c808 PseudocodeVariablesData converted to Kotlin 2015-12-26 10:46:20 +03:00
Mikhail Glukhikh
7179b37d95 PseudocodeVariablesData.java --> PseudocodeVariablesData.kt 2015-12-26 10:46:16 +03:00
Mikhail Glukhikh
b93894953d Exhaustive whens without else and 'Nothing' as the result are considered 'implicit exhaustive' 2015-12-26 10:46:11 +03:00
Mikhail Glukhikh
d62d7dd84f Introduced binding context storage for implicit exhaustive when (KT-8700) 2015-12-26 10:46:06 +03:00
Mikhail Glukhikh
b805ce06c2 CFG exhaustive when else instruction for KT-8700 2015-12-26 10:46:01 +03:00
Alexander Udalov
697228eae0 Mark enum entry names as name ids for incremental compilation purposes 2015-12-25 20:16:18 +03:00
Alexander Udalov
3513a64351 Move utilities about companion property fields to JvmAbi
To reuse that logic in reflection
2015-12-25 20:16:18 +03:00
Alexander Udalov
0685f06200 Drop outdated stuff from metadata annotations
Make KotlinLocalClass and KotlinInterfaceDefaultImpls not retained at runtime,
to be maybe deleted in the future
2015-12-25 20:16:18 +03:00
Alexander Udalov
0ecf04dcc5 Drop KotlinDelegatedMethod, simplify related code in codegen 2015-12-25 20:16:18 +03:00
Alexander Udalov
39c10867a0 Drop 'index' JVM binary format extension
Compute the JVM parameer index manually instead
2015-12-25 20:16:18 +03:00
Alexander Udalov
8dc604ac8b Drop compatibility flag, suppressing optimized generation of callable references 2015-12-25 20:16:18 +03:00
Alexander Udalov
64b48f4458 Drop compatibility flag, suppressing optimized generation of delegated property metadata 2015-12-25 20:16:18 +03:00
Alexander Udalov
002dc92d89 Drop old antlib.xml in org/jetbrains/jet/buildtools/ant
Use the new one in org/jetbrains/kotlin/ant instead
2015-12-25 20:16:18 +03:00
Alexander Udalov
dc6a176282 Drop old JVM binary format extensions: static in outer, impl class name 2015-12-25 20:16:18 +03:00
Alexander Udalov
fc74759231 Drop old enum entries from binary format 2015-12-25 20:16:18 +03:00
Alexander Udalov
57b96f38a9 Minor, remove/simplify unnecessary utilities in util.runtime 2015-12-25 20:16:18 +03:00
Alexander Udalov
b4addd0567 Move builtins-related logic from DeserializedPackageFragment to BuiltinsPackageFragment 2015-12-25 20:16:18 +03:00
Alexander Udalov
e7da56baf4 Restructure code in BuiltInsSerializer 2015-12-25 20:16:18 +03:00
Alexander Udalov
ddcdc11099 Write and read built-ins binary version 2015-12-25 20:16:18 +03:00
Alexander Udalov
906d706961 Deserialize builtins from new message 2015-12-25 20:16:18 +03:00
Alexander Udalov
7592f31596 Serialize built-ins to separate file .kotlin_builtins 2015-12-25 20:16:18 +03:00
Alexander Udalov
07a23cab10 Minor, make SerializedResourcePaths an interface 2015-12-25 20:16:18 +03:00
Alexander Udalov
75f046fa81 Drop Throwable#printStackTrace, make it a JVM-specific extension 2015-12-25 20:16:18 +03:00
Stanislav Erokhin
3d44471659 KT-10483 Missing smart cast on variable in variable as function call
#KT-10483 Fixed
2015-12-25 20:13:08 +03:00
Alexey Sedunov
4de26bed93 Minor: Add test for now-obsolete KT-8035 "Extended class is not open" quickfix fails on nested classes " 2015-12-25 18:51:03 +03:00
Alexey Sedunov
c90d283ff5 Quick Fixes: Implement 'Add val/var to primary constructor parameter' quick-fix for data classes
#KT-4038 Fixed
2015-12-25 18:50:59 +03:00
Alexey Sedunov
6978d842fb Intentions: Implement 'Add val/var to primary constructor parameter' intention
#KT-4038 In Progress
2015-12-25 18:50:55 +03:00
Alexey Sedunov
5dcf531048 Formatter: Leave single space between val/var and value parameter 2015-12-25 18:50:52 +03:00
Alexey Sedunov
2895e2e86f Change Signature: Process implicit usages of data class 'componentN' functions
#KT-9393 Fixed
2015-12-25 18:50:48 +03:00
Alexey Sedunov
4fba251fba Intentions: 'Implement abstract member' (Kotlin -> Java)
#KT-8467 Fixed
2015-12-25 18:50:41 +03:00
Alexey Sedunov
03641ffbee Intentions: 'Implement abstract member' (Kotlin -> Kotlin)
#KT-8467 In Progress
2015-12-25 18:50:37 +03:00
Alexey Sedunov
123b813073 'Replace with infix call' Intention: Disable on calls without explicit receiver
#KT-6332 Fixed
2015-12-25 18:50:34 +03:00
Alexey Sedunov
ae636a0d32 Iterate Intention: Add support of destructuring declarations 2015-12-25 18:50:30 +03:00
Alexey Sedunov
1d3054e7a6 Iterate Intention: Filter out functions without 'operator' modifier 2015-12-25 18:50:27 +03:00
Alexey Sedunov
1c74bab1cc Iterate Intention: Fix detection of extension iterators
#KT-8616 Fixed
2015-12-25 18:50:23 +03:00
Alexey Sedunov
ee9389d089 Create from Usage: Strip first parameter of extension function when expected type is non-extension 2015-12-25 18:50:19 +03:00
Alexey Sedunov
da2806acde Minor: Fix IllegalAccessError on referencing synthetic property 2015-12-25 12:59:15 +03:00
Michael Bogdanov
f870e365fa Removed accessors for const properties 2015-12-25 11:28:10 +03:00
Michael Bogdanov
b4db23a7b3 Removed 'INSTANCE' field from companions 2015-12-24 13:59:45 +03:00
Michael Bogdanov
2e73559f33 Removed 'INSTANCE$' field generation 2015-12-24 13:59:44 +03:00
Michael Bogdanov
aeb6486473 Deprecated 'INSTANCE$' replaced with 'INSTANCE' 2015-12-24 13:59:43 +03:00
Denis Zharkov
80fd9e3cbb Fix wrong contract assumption
Currently SamAdapterOverridabilityCondition can be called
even for incompatible descriptors

 #KT-10486 Fixed
2015-12-24 12:25:31 +03:00
Ilya Gorbunov
f9ba35af64 Place Char constants into builtin Char companion object. 2015-12-24 06:18:51 +03:00
Ilya Gorbunov
de11ed4fc6 Primitive Companion objects do not longer implement IntegerConstants and FloatingPointConstants. All declarations moved inside companions.
IntegerConstants and FloatingPointConstants are dropped.
#KT-8897 Fixed
2015-12-24 06:17:03 +03:00
Mikhail Glukhikh
fc4250b02b EA-75872 / KT-10473 fix: both JVM- and JS-diagnostic factories are now used as extensions 2015-12-23 18:33:50 +03:00
Mikhail Glukhikh
99a32b93fb Implemented missed checks for local functions #KT-10449 Fixed
Relevant code/test fixes
2015-12-23 18:22:32 +03:00
Mikhail Glukhikh
15746cbf56 Implicit callable type check refactoring, additional check for property with explicit Nothing type 2015-12-23 18:04:25 +03:00
Mikhail Glukhikh
6b8b39a7bd Intersection types are no more allowed in signatures #KT-10244 Fixed 2015-12-23 18:04:21 +03:00
Mikhail Glukhikh
f56dc722d9 Lateinit property backing field now inherits visibility from the property setter 2015-12-23 18:02:20 +03:00
Mikhail Glukhikh
ebda21c68a Codegen tests for lateinit var with private setter 2015-12-23 18:02:07 +03:00
Mikhail Glukhikh
60521e20ff SETTER_VISIBILITY_DIFFERS_FROM_LATEINIT_VISIBILITY diagnostic removed 2015-12-23 17:48:28 +03:00
Pavel V. Talanov
cfacd5da1e Fix a problem caused by getting project using an invalid psi element 2015-12-23 17:07:51 +03:00
Alexander Udalov
a7324ebad2 Minor, additional constructor for JvmPackagePartSource 2015-12-23 16:45:26 +03:00
Alexander Udalov
12e921ab15 Minor, add test on annotation in enum companion 2015-12-23 16:45:26 +03:00
Alexander Udalov
7170d488bd Fix package part class name calculation
Package part name can contain dollars
2015-12-23 16:45:26 +03:00
Alexander Udalov
e67318e049 Minor, add DescriptorUtils.isClassOrEnumClass 2015-12-23 16:45:26 +03:00
Alexander Udalov
48a0a95e8f Fix nested class context in cls stub builder
Previously two contexts were created for a nested class stub: one with the
replaced NameResolver, another with everything else. Now only one is created
2015-12-23 16:45:26 +03:00
Alexander Udalov
cd435c4130 Do not load implClassName JVM proto extension
Use JvmPackagePartSource instead for functions/properties in package parts,
check containing class kind for properties in interfaces
2015-12-23 16:45:26 +03:00
Alexander Udalov
03606c13aa Introduce PackagePartSource to store part class name in deserialized descriptors
Not used at the moment, will be in the following commits
2015-12-23 16:45:26 +03:00
Alexander Udalov
f4c5289cfc Minor, fix typo in class name: jmv -> jvm 2015-12-23 16:45:26 +03:00
Alexander Udalov
51cdb981f4 Remove obsolete code in IncrementalPackageFragmentProvider 2015-12-23 16:45:26 +03:00
Alexander Udalov
f7969621d6 Don't read isStaticInOuter message for fields
It's only written for fields of properties of companion objects of classes;
handle that case manually in deserialization
2015-12-23 16:45:26 +03:00
Alexander Udalov
696dce68fb Move deserialized callable descriptors to single file, convert to Kotlin 2015-12-23 16:45:26 +03:00
Alexander Udalov
19372a7210 Minor, make ProtoContainer sealed with two subclasses 2015-12-23 16:45:26 +03:00
Alexander Udalov
745de229cc Minor, split IMPL_CLASS_NAME_FOR_CALLABLE to two slices 2015-12-23 16:45:26 +03:00
Yan Zhulanow
b3877b5f0b Always compile Android projects without JDK in classpath #KT-10479 2015-12-23 16:42:35 +03:00
Pavel V. Talanov
70dc5a5c4c IDELightClassGenerationSupport: fix a problem when marking source root as both source and library source led to SO
# KT-10413 Fixed
2015-12-23 16:08:34 +03:00
Pavel V. Talanov
a8c5e0cc95 Minor, ProjectRootsUtil: extract a couple of utils and use them 2015-12-23 16:08:34 +03:00
Pavel V. Talanov
f20aba63a6 Add better diagnostic for "could not create stub for nested class" failures 2015-12-23 15:13:13 +03:00
Pavel V. Talanov
6a1ca7b9c9 Fix an exception caused by objects literals in supertype list not considered local 2015-12-23 14:56:27 +03:00
Dmitry Petrov
00db7d150b Fix KT-10472: compare all overloads including varargs in a single pass. 2015-12-23 10:05:40 +03:00
Nikolay Krasko
f25d80c38b Make add test lib quick-fix applicable only when there is unresolved import 2015-12-22 19:44:15 +03:00
Nikolay Krasko
259397db9d Add library for Gradle 2015-12-22 19:44:15 +03:00
Nikolay Krasko
2fba6c361a Determine maven library version from kotlin-stdlib 2015-12-22 19:44:15 +03:00
Nikolay Krasko
5467671a21 Add libraries to maven 2015-12-22 19:44:15 +03:00
Nikolay Krasko
1b92fa94bc Add kotlin-test.jar to classpath quickfix 2015-12-22 19:44:14 +03:00
Pavel V. Talanov
99966c17da Go to (show) implementations: skip light methods that are generated with DELEGATION or DELEGATION_TO_DEFAULT_IMPLS JvmDeclarationOriginKind
Add some unrelated tests for fake overrides
2015-12-22 17:30:51 +03:00
Stanislav Erokhin
de6f52030c Hack for unavailable archive.apache.org: use bintray.com instead 2015-12-22 16:44:10 +03:00
Dmitry Petrov
142e85be04 Prohibit functions (and constructors) with multiple vararg parameters. 2015-12-22 10:40:41 +03:00
Alexander Udalov
ed2ad8e8e3 Minor, fix warnings related to OperatorNameConventions 2015-12-21 20:41:45 +03:00
Alexander Udalov
97ce61ac44 Throw exception on inlining bytecode of version > 1.6
To prevent ASM from failing with a meaningless exception in this case as soon
as we support target 1.8 and someone tries to compile some code with the
current compiler against the new (1.8) code.
2015-12-21 20:38:18 +03:00
Alexander Udalov
7449ad2763 Rename Extension annotation to ExtensionFunctionType
The old one is kept temporarily and will be removed later
2015-12-21 20:33:32 +03:00
Alexander Udalov
6d40d94127 Minor, use String instead of DeprecationLevel
Using classes from runtime in the compiler is confusing and doesn't allow to
incompatibly change them
2015-12-21 20:28:40 +03:00
Alexander Udalov
c10cc30f40 Drop kotlin.jvm.internal.Intrinsic, use only one mechanism for intrinsics 2015-12-21 20:28:40 +03:00
Alexander Udalov
6048ebf871 Fix terminology: internal name instead of FQ name 2015-12-21 20:27:41 +03:00
Alexander Udalov
2ccd6d54b7 Add kotlin-reflect as a separate library
Exclude in core modules, since they do not have kotlin-reflect.jar in
dependencies when are built in build.xml
2015-12-21 18:46:08 +03:00
Alexander Udalov
a9476dfe37 Replace 'kotlin-runtime' in module dependencies with 'util' 2015-12-21 18:46:08 +03:00
Alexander Udalov
fa8c1f1a37 Delete obsolete tests on metadata annotations 2015-12-21 18:46:08 +03:00
Alexander Udalov
12922c3abd Minor, delete kunit source root from StdlibTest 2015-12-21 18:46:08 +03:00
Sergey Mashkov
c5e43a1327 kotlin-test: fix manifest description caused by copy-paste 2015-12-21 18:43:54 +03:00
Sergey Mashkov
2b6ae3127b kotlin-test: exclude OnlyInpuType from dist kotlin-test as well 2015-12-21 15:39:44 +03:00
Sergey Mashkov
8139070754 kotlin-test: exclude OnlyInputTypes annotation from jar 2015-12-21 15:14:55 +03:00
Sergey Mashkov
5ad0a84039 rename kotlin.test to kotlin-test 2015-12-21 15:10:24 +03:00
Andrey Breslav
a7e7d53e2b Reserve "async* {}", extend the quick-fix 2015-12-21 07:15:37 +03:00
Andrey Breslav
45074841a4 Minor. Additional test for "async {}" 2015-12-21 07:15:37 +03:00
Stanislav Erokhin
318f0c89b2 Completion fix for reserved 'async' syntax 2015-12-21 07:15:37 +03:00
Nikolay Krasko
afc1e24571 Quick fix for deprecated async syntax 2015-12-21 07:15:37 +03:00
Nikolay Krasko
01095bc652 More usages for getTestRoots method 2015-12-19 14:32:40 +03:00
Nikolay Krasko
2c1bf4dbd9 Remove filenameStartsLowerCase flag and clean warnings 2015-12-19 14:32:39 +03:00
Nikolay Krasko
aee36c40cd Request resolve only for modifier list for suppression check 2015-12-19 14:32:39 +03:00
Nikolay Krasko
b79aa686bb Avoid analyze in suppression check if there are no suppression annotations 2015-12-19 14:32:38 +03:00
Nikolay Krasko
697132561f Allow to override suppression key for inspections 2015-12-19 14:32:38 +03:00
Nikolay Krasko
8196621be5 Add test for inspections suppression 2015-12-19 14:32:38 +03:00
Nikolay Krasko
aff83087a3 Allow to suppress warnings at file level 2015-12-19 14:32:37 +03:00
Nikolay Krasko
712d2bdec0 Enable suppression actions for Kotlin inspections 2015-12-19 14:32:37 +03:00
Nikolay Krasko
94c0ccf2bf Fix test with dummy diagnostic 2015-12-19 14:32:36 +03:00
Nikolay Krasko
36210f0a27 Allow to suppress kotlin inspections with Suppress() annotation 2015-12-19 14:32:36 +03:00
Nikolay Krasko
ef265e23f8 Refactoring: SuppressionManager -> KotlinSuppressCache 2015-12-19 14:32:35 +03:00
Nikolay Krasko
b61b4e1c90 Allow to check suppression by string keys 2015-12-19 14:32:35 +03:00
Nikolay Krasko
20379028e8 Refactoring: extract separate class that can store suppressions 2015-12-19 14:32:34 +03:00
Nikolay Krasko
e562b73eff Refactoring: extract method for check test is AllFilesPresent test 2015-12-19 14:32:33 +03:00
Nikolay Krasko
5cd23daf4e Allow to run additional resolve from KtFileAnnotationList 2015-12-19 14:32:33 +03:00
Nikolay Krasko
0aa8d89b16 Minor: regenerate, optimize imports 2015-12-19 14:32:32 +03:00
Ilya Gorbunov
0a1f4d6088 Deprecate IndexingIterable and IndexingIterator and provide Iterator.withIndex() instead of the latter. 2015-12-19 09:56:52 +03:00
Ilya Gorbunov
fbfeb98ecf Deprecate some top-level constants to make 'em private later. 2015-12-19 09:56:46 +03:00
Ilya Chernikov
6ba68da811 Working around cancellation-related exception in case of different versions of daemon and client 2015-12-18 22:17:15 +01:00
Stanislav Erokhin
9e986db840 Minor. run generate tests 2015-12-18 22:54:05 +03:00
Stanislav Erokhin
bcaa755c4e Fix compilation.
- rename isFinal extension property to avoid ambiguity with synthetic property in DeserializedClassTypeConstructor
- add explicit parameter to lambda File.listFiles
- return true from lambda Query.forEach
2015-12-18 22:49:26 +03:00
Stanislav Erokhin
1574dc78df Synthetic extensions wins against top-level extension. 2015-12-18 22:49:25 +03:00
Stanislav Erokhin
e8a697cb6d Removed methods about synthetic from ImportingScope. 2015-12-18 22:49:24 +03:00
Stanislav Erokhin
fe9cbd982d Extract SyntheticScopes to injection component 2015-12-18 22:49:23 +03:00
Sergey Mashkov
3b08e5e547 kotlin-test: rename projects to eliminate possible mess 2015-12-18 22:17:48 +03:00
Sergey Mashkov
a97e623d04 kotlin-test: binary compatibility for fail function 2015-12-18 22:17:48 +03:00
Sergey Mashkov
f21b6a4777 Ant task to copy dist as a bootstrap compiler 2015-12-18 22:17:47 +03:00
Sergey Mashkov
fe4f51617c Add kotlin.test dependency to kotlin-compiler-embeddable 2015-12-18 22:17:47 +03:00
Sergey Mashkov
790524e391 Add library kotlin-test to IDEA project 2015-12-18 22:17:47 +03:00
Sergey Mashkov
f1783530ac Replace test assertions in the prod code with require 2015-12-18 22:17:47 +03:00
Sergey Mashkov
e25d31618c Fix tests 2015-12-18 22:16:04 +03:00
Sergey Mashkov
b57d2ff702 Add kotlin.test library to build distribution and provide for tests 2015-12-18 22:16:04 +03:00
Sergey Mashkov
7aae2bd452 kotlin-test: Remove javaClass as is in runtime now 2015-12-18 22:16:04 +03:00
Sergey Mashkov
a5b098c4a7 kotlin.test: Rename jvm module to junit 2015-12-18 22:16:04 +03:00
Sergey Mashkov
149ce70ce2 Move testing from stdlib to js.stdlib 2015-12-18 22:16:04 +03:00
Sergey Mashkov
1867abbbe7 Add kotlin.test library 2015-12-18 22:16:04 +03:00
Sergey Mashkov
dd36ef5712 Remove kunit 2015-12-18 22:16:04 +03:00
Andrey Breslav
6155d836a5 'async' reserved in front of function literals 2015-12-18 21:20:54 +03:00
Andrey Breslav
75ab0dd509 'sealed' reserved in front of when 2015-12-18 21:20:54 +03:00
Andrey Breslav
c36eeadab1 Minor. Constant used instead of constructor 2015-12-18 21:20:54 +03:00
Dmitry Petrov
09f53ea0bb Select most specific overloaded function/property by explicitly used arguments only.
Major rewrite of OverloadingConflictResolver.
2015-12-18 18:30:16 +03:00
Dmitry Petrov
52f0e0bc93 J2K: OverloadingConflictResolver.kt - convert to Kotlin 2015-12-18 18:30:16 +03:00
Dmitry Petrov
ca6153e8f1 J2K: OverloadingConflictResolver.kt 2015-12-18 18:30:16 +03:00
Ilya Gorbunov
03816373b3 Primitive array constructor-like functions with init lambda.
#KT-8831

Update testData and resolve ambiguity in newArray test
2015-12-18 17:54:09 +03:00
Natalia Ukhorskaya
513c4a4562 J2K: transform loops with double, float and char range with while
#KT-899 Fixed
2015-12-18 16:14:17 +03:00
Natalia Ukhorskaya
ecdef71580 J2K: cast right operand of equals for primitive types to left operand type
#KT-9997 Fixed
2015-12-18 16:14:16 +03:00
Natalia Ukhorskaya
1d787ed222 J2K: Insert initializer type for properties with primitive type if necessary 2015-12-18 16:14:15 +03:00
Ilya Gorbunov
188119aa83 Prepare to treat keys mapped to null same way as missing keys in Map extensions: getOrElse, getOrPut, getOrImplicitDefault. 2015-12-18 15:24:03 +03:00
Stanislav Erokhin
8b5a194dd6 Do not discriminate synthesized candidates.
#KT-9965 Fixed
2015-12-18 15:08:19 +03:00
Stanislav Erokhin
1b6f96ac2b Minor. update diagnostics/ReadMe.md 2015-12-18 15:08:18 +03:00
Alexey Sedunov
2fb3c727a7 Misc: Cleanup "org.jetbrains.kotlin.idea.intentions" package 2015-12-18 15:05:48 +03:00
Alexey Sedunov
3fca8f765c Misc: Cleanup "org.jetbrains.kotlin.idea.quickfix" package 2015-12-18 15:05:46 +03:00
Alexey Sedunov
ad55c8fb96 Misc: Cleanup "org.jetbrains.kotlin.idea.refactoring" package 2015-12-18 15:05:43 +03:00
Alexey Sedunov
f745f27694 Change Signature: Check syntactic validity of types. Warn about unresolved types 2015-12-18 15:05:40 +03:00
Alexey Sedunov
784b250de8 Change Signature: Fix rendering of unresolved types in overriding members 2015-12-18 15:05:39 +03:00
Alexey Sedunov
05ec9cc424 Initialize Property in Constructor Quick-Fix: Disable clearing of ShortenReferences waiting set 2015-12-18 15:05:37 +03:00
Alexey Sedunov
fd79145b73 Change Signature: Represent parameter/receiver types using KotlinTypeInfo 2015-12-18 15:05:36 +03:00
Alexey Sedunov
e558581667 Change Signature: Represent return type using KotlinTypeInfo 2015-12-18 15:05:34 +03:00
Alexey Sedunov
24951e8a38 J2K: KtTypeCodeFragment.java 2015-12-18 15:05:33 +03:00
Alexey Sedunov
6fe48243c7 J2K: KtTypeCodeFragment.java (rename to .kt) 2015-12-18 15:05:31 +03:00
Alexey Sedunov
594ad27952 Change Signature: Implement proper resolution of type code fragments
#KT-9210 Fixed
2015-12-18 15:05:29 +03:00
Alexey Sedunov
cfe1c44260 Introduce Variable: Add type argument to initializer if they can't be inferred from the context
#KT-5466 Fixed
2015-12-18 15:05:27 +03:00
Alexey Sedunov
ea8da18338 Inline Variable: Highlight usages in current file even if the variable is used in other files 2015-12-18 15:05:24 +03:00
Alexey Sedunov
4e36edb5d6 Inline Variable: Remove invalid imports and perform reference lengthening/shortening when inlining non-local declaration
#KT-8884 Fixed
2015-12-18 15:05:23 +03:00
Michael Bogdanov
44bdac6e11 Added file name to exception on indexing file mappings 2015-12-18 14:25:46 +03:00
Ilya Gorbunov
055c71e8d0 Provide minWith and maxWith to find maximum and minimum values according to the given comparator.
#KT-9002 Fixed
2015-12-18 00:00:52 +03:00
Ilya Gorbunov
b5e637bed5 Rename toMap with selector and transform to toMapBy 2015-12-17 22:50:44 +03:00
Ilya Gorbunov
544bc9a70c Introduce toMap with key-value pair selector.
#KT-6657
2015-12-17 22:50:43 +03:00
Ilya Gorbunov
2966420d24 Harden deprecation level for synchronized helper functions.
Make migration helper classes deprecated-hidden, although it doesn't affect anything.
2015-12-17 22:48:13 +03:00
Stanislav Erokhin
7521b89b3e Resolve unaryPlus as plus with error. 2015-12-17 20:21:01 +03:00
Denis Zharkov
1a6f9b8d1c Do not build inner type for error classes
#KT-10409 Fixed
2015-12-17 19:56:38 +03:00
Denis Zharkov
0d7c8635b3 Refine INSTANCE_ACCESS_BEFORE_SUPER_CALL check
- Detect usages of unitialized `this` as extension receiver argument
- Make it work within object literal created before super call

 #KT-9120 Fixed
 #KT-8289 Fixed
2015-12-17 19:56:38 +03:00
Zalim Bashorov
ba180f915a Minor: uncomment code fragments in ic tests which already should work 2015-12-17 19:41:25 +03:00
Zalim Bashorov
d9b67ae0ef Minor: use ".touch" extension instead of ".new" in incremental compilation tests when it possible 2015-12-17 19:41:24 +03:00
Mikhail Glukhikh
fe57a9e48f Setter visibility must be worse or the same as property visibility 2015-12-17 19:03:06 +03:00
Mikhail Glukhikh
f5989aa4f2 CallableMemberDescriptor.isOverridable / ClassDescriptor.isFinal refactoring
Extra JvmField and integer constants tests
2015-12-17 18:11:41 +03:00
Mikhail Glukhikh
91621704a2 Additional information to catch EA-75872 2015-12-17 17:30:30 +03:00
Evgeny Gerashchenko
16f482f723 Merge pull request #797 from JetBrains/rr/kt8365
KT-8365 Bogus "Receiver never used" warning when receiver is used in invoke() convention call
2015-12-17 17:38:24 +04:00
Alexey Tsvetkov
7384d25cb3 Prohibit Array<Nothing> 2015-12-17 16:26:26 +03:00
Mikhail Glukhikh
35f788a89c INAPPLICABLE_FIELD_TARGET_NO_BACKING_FIELD deleted (not necessary already) 2015-12-17 15:07:07 +03:00
Mikhail Glukhikh
3fb04aceb9 Check backing field availability for AnnotationTarget.FIELD #KT-10387 Fixed
Some duplicated checks deleted (UseSiteTargetChecker / JvmFieldApplicabilityChecker)
2015-12-17 15:06:58 +03:00
Mikhail Glukhikh
f55574df36 Code fix: TestOnly on a property without backing field 2015-12-17 15:06:51 +03:00
Michael Bogdanov
ca9e8fc5a7 Fix for KT-5910: Can't call Throwable() in Kotlin
#KT-5910 Fixed
2015-12-17 14:09:15 +03:00
Natalia Ukhorskaya
d40e9ffc13 Do not convert anonymous object to lambda if its function is recursive
#KT-10348 Fixed
2015-12-17 13:39:36 +03:00
Evgeny Gerashchenko
9aa38d99fb KT-8365 Bogus "Receiver never used" warning when receiver is used in invoke() convention call
#KT-8365 fixed
2015-12-17 13:31:43 +03:00
Evgeny Gerashchenko
2e6d82a72b Minor. Green code. 2015-12-17 13:06:27 +03:00
Natalia Ukhorskaya
43476bd773 Do not drop negation if resulting type isn't boolean 2015-12-17 11:11:33 +03:00
Natalia Ukhorskaya
f84b3414c8 Remove outdated test: generic property should have a receiver 2015-12-17 11:11:32 +03:00
Natalia Ukhorskaya
4b1edf7bb0 Intention tests: add directive to skip errors before 2015-12-17 11:11:31 +03:00
Natalia Ukhorskaya
7e6495618b ChangeVariableMutability: diagnostic can be reported on constructor parameter
#KT-10416 Fixed
2015-12-17 11:11:31 +03:00
Natalia Ukhorskaya
fc7c45d4d0 NegatedExpressionWithDemorgansLaw may produce code with error 2015-12-17 11:11:30 +03:00
Natalia Ukhorskaya
7f0065c806 Fix OperatorToFunctionIntention: insert function literal expressions to arguments correctly 2015-12-17 11:11:29 +03:00
Natalia Ukhorskaya
6bfbec8c88 ConvertAssertToIf may produce code with error
// TODO: we could generate anonymous function instead of lambda expression when there is a return
2015-12-17 11:11:28 +03:00
Natalia Ukhorskaya
ce3d53d2ee Intention tests: add operator modifier in some tests 2015-12-17 11:11:27 +03:00
Natalia Ukhorskaya
2c29f6f5ab ConvertIfWithThrowToAssertIntention: generate assert with lazy argument 2015-12-17 11:11:26 +03:00
Natalia Ukhorskaya
2dc1ba1d62 Intention 'remove explicit lambda parameter' may break code, do not check error in tests for it 2015-12-17 11:11:26 +03:00
Natalia Ukhorskaya
269676ee2e Intention tests: skip errors check for tests that fix some error 2015-12-17 11:11:25 +03:00
Natalia Ukhorskaya
abd7ed5c70 Fix intention for when: insert '||' instead of ',' 2015-12-17 11:11:24 +03:00
Natalia Ukhorskaya
6a3ac66208 Intention tests: add runtime where necessary 2015-12-17 11:11:23 +03:00
Natalia Ukhorskaya
78d737f3f4 Check errors in Intentions tests by default 2015-12-17 11:11:22 +03:00
Natalia Ukhorskaya
cc259c2d15 Intention convert object literal to lambda should add parameters if there are more than one 2015-12-17 11:11:22 +03:00
Natalia Ukhorskaya
5e231db631 J2K: convert method from Map (Java8) with cast to java.util.Map
#KT-10400 Fixed
2015-12-17 11:11:21 +03:00
Natalia Ukhorskaya
3f7b8554dd J2K: parenthesize receiver if needed
#KT-10121 Fixed
2015-12-17 11:11:20 +03:00
Natalia Ukhorskaya
a520e93b5b J2K: don't automatically convert Java code when pasting to a string literal in Kotlin
#KT-7759 Fixed
2015-12-17 11:11:19 +03:00
Natalia Ukhorskaya
f3a6c541ec J2K: Convert usages of kotlin functions from library correctly
#KT-6115 Fixed
2015-12-17 11:11:18 +03:00
Natalia Ukhorskaya
693e158759 Intention to convert anonymous function to lambda 2015-12-17 11:11:18 +03:00
Natalia Ukhorskaya
c79ffbac5c Run code cleanup on j2k module 2015-12-17 11:11:16 +03:00
Natalia Ukhorskaya
a983e6cf60 J2K: Do not convert string literal with escaped symbols automaticaly during java to kotlin conversion
#KT-9942 Fixed
2015-12-17 11:11:16 +03:00
Natalia Ukhorskaya
68101eeffa J2K: do not drop formatting for expressions with operator 2015-12-17 11:11:15 +03:00
Natalia Ukhorskaya
293b8eeda8 Minor: fix IDEA(win) run configuration 2015-12-17 11:11:14 +03:00
Michael Bogdanov
7a1d789e9a Added InliningLambdaContext 2015-12-17 09:52:28 +03:00
Michael Bogdanov
ebbc68dfae isInlineFunction renamed to isInlineMethodContext 2015-12-17 09:52:27 +03:00
Michael Bogdanov
9cad1a912a Choose proper context for accessor generation: skip inline ones; Fix for KT-6102: Bypass synthetic accessor when inlining lambda which calls private member
#KT-6102 Fixed
2015-12-17 09:51:41 +03:00
Michael Bogdanov
033698c51d Added crossinline field to MethodContext 2015-12-17 09:50:54 +03:00
Michael Bogdanov
b0a7706812 Test for obsolete KT-5445: Bad access to protected data in getfield
#KT-5445 Obsolete
2015-12-17 09:50:39 +03:00
Dmitry Jemerov
179498d971 UI for enabling EAP channel for plugin updates 2015-12-16 19:59:56 +01:00
Alexey Tsvetkov
5330248f6e Add checkbox for experimental incremental compilation; Make simple incremental compilation on by default 2015-12-16 21:52:39 +03:00
Alexander Udalov
0ba0ea5e1f Report 'unsupported' on synthetic Java property references
#KT-8575 Open
2015-12-16 19:50:15 +03:00
Alexander Udalov
dc84445e2e Inherit KProperty interfaces from function types
To be able to write the following: listOfStrings.map(String::length)
2015-12-16 19:48:28 +03:00
Mikhail Glukhikh
f25f0db10e Fixed long / double / float value merge in OptimizationBasicInterpreter #KT-7401 Fixed 2015-12-16 17:45:38 +03:00
Stanislav Erokhin
75089a3af8 Revert "Project configuration: Add sources to kotlin-runtime library"
This is workaround for KT-10413.
This reverts commit 623ecd2503.
2015-12-16 12:53:56 +03:00
Stanislav Erokhin
c725ed47f5 Replaced ReceiverValue.NO_RECEIVER to null. 2015-12-15 23:09:20 +03:00
Stanislav Erokhin
3692318c38 Minor. Removed ReceiverValue.IRRELEVANT_RECEIVER. 2015-12-15 23:08:41 +03:00
Pavel V. Talanov
56cd29dff2 Increase file size limit of compiler to 20 (was 2.5) megabytes (compiler will not read files larger than that)
Current IDEA api makes it possible to increase that to a higher value only by passing system property on compiler startup
2015-12-15 20:24:11 +03:00
Pavel V. Talanov
8d5d1b7dcc LightClassUtil: files can no longer "belong to builtIns" 2015-12-15 20:22:14 +03:00
Pavel V. Talanov
bd9221beaa Minor, fix test data for KotlinGoToTest 2015-12-15 20:22:13 +03:00
Pavel V. Talanov
623ecd2503 Project configuration: Add sources to kotlin-runtime library 2015-12-15 20:22:12 +03:00
Pavel V. Talanov
ca38a50e1a Test data: fix test data for LineMarkerTest 2015-12-15 20:22:12 +03:00
Pavel V. Talanov
4fdc77f86f Minor, mark component functions as operator in test data for ReferenceResolveWithLibTest 2015-12-15 20:22:11 +03:00
Pavel V. Talanov
6a780f01bd Replace calls to QuickFixUtil.canModify by calls to canRefactor
Fix ChangeFunctionSignatureFix#isAvailable
2015-12-15 20:22:10 +03:00
Pavel V. Talanov
a667aa2f71 Tests: add runtime (and runtime sources) to some tests that rely on being able to resolve references to built ins 2015-12-15 20:22:09 +03:00
Pavel V. Talanov
539b84b561 Minor, stricter check for when deciding whether to build light class for decompiled declaration 2015-12-15 20:22:09 +03:00
Pavel V. Talanov
ddde372fad Upgrade BuiltInsReferenceResolverTest 2015-12-15 20:22:08 +03:00
Pavel V. Talanov
ef134ffb1b ProjectDescriptorWithStdlibSources includes source files for builtIns 2015-12-15 20:22:07 +03:00
Pavel V. Talanov
0099c10e4e Drop BuiltInsReferenceResolver 2015-12-15 20:22:07 +03:00
Pavel V. Talanov
3f0d71411e KtDecompiledFile: hack to be able to navigate to builtIns on jvm
Which sometimes are loaded differently than they are rendered (see BuiltInClassesAreSerializableOnJvm)
2015-12-15 20:22:06 +03:00
Pavel V. Talanov
b5568f9ace findDecompiledDeclaration: rewrite using stub indices 2015-12-15 20:22:05 +03:00
Pavel V. Talanov
7ccdbfd596 Minor, rename file 2015-12-15 20:22:04 +03:00
Pavel V. Talanov
01b79f640f DecompiledNavigationUtils -> findDecompiledDeclaration() 2015-12-15 20:22:04 +03:00
Pavel V. Talanov
d89b609960 J2K DecompiledNavigationUtils: rename file 2015-12-15 20:22:03 +03:00
Pavel V. Talanov
9ad6685310 J2K DecompiledNavigationUtils: autoconvert 2015-12-15 20:22:02 +03:00
Zalim Bashorov
976fbf32ba Minor: use List instead of Array as container in chained scopes 2015-12-15 20:07:37 +03:00
Zalim Bashorov
5008a66a5b ChainedScope -> ChainedMemberScope 2015-12-15 20:07:36 +03:00
Zalim Bashorov
674a15daa1 Disable test until KT-10405 not fixed 2015-12-15 20:07:35 +03:00
Zalim Bashorov
8fa2e28729 Add usages of inherited static members from nested object 2015-12-15 20:07:33 +03:00
Zalim Bashorov
e201268f46 Remove unnecessary scopes 2015-12-15 19:41:18 +03:00
Zalim Bashorov
8c4deb80e5 Extract to property path to js.stdlib output dir and fix statistics for generated js files 2015-12-15 19:41:17 +03:00
Zalim Bashorov
0b6e100aff Fix compilation 2015-12-15 19:41:16 +03:00
Zalim Bashorov
51a8d5b9f0 Allow to use static members from companion object's parents 2015-12-15 19:41:15 +03:00
Zalim Bashorov
69c2668530 Don't allow to use own members when resolve super constructor call in (companion) object 2015-12-15 19:41:14 +03:00
Zalim Bashorov
e9ea4cc953 Don't allow to use own nested classes when resolve header of (companion) object 2015-12-15 19:41:13 +03:00
Zalim Bashorov
38522f60ea Minor: add helper function createLazyValue with onRecursion 2015-12-15 19:41:12 +03:00
Denis Zharkov
7756644eb1 Introduce KClass<T>.javaPrimitiveType and KClass<T>.javaObjectType
#KT-6319 Fixed
2015-12-15 16:18:31 +03:00
Denis Zharkov
154657a374 Fix wildcards for invariant arguments
See test with Java, we want preserve the invariant that if return type and
value parameter types are same in Kotlin, than we can use such return-value
as argument for that parameter
2015-12-15 16:18:31 +03:00
Denis Zharkov
5df2a58003 Minor. Adjust generic parameter naming 2015-12-15 16:18:31 +03:00
Denis Zharkov
b4bb92d136 Fix overload resolution ambiguity for types intersection
There are two different forms of types intestion:
1. Type parameters with multiple bounds
2. Smart casts

The problem was that when member scope of type intersection contained
effective duplicates and that lead to overload resolution ambiguity in
strange cases like `x.hashCode()`

For first type we do effectively the same thing as when building member
scope for class extending several interfaces: group all descriptors by
both-way-overridability relation and then choose most-specific in each
group.

For smart casts we do basically the same thing but with special
treatments:
1. From all descriptors that _equal_ to most specific we choose
   the one that works without smartcast if possible (i.e. we choose first from candidates list)
2. If smart-cast value seems to be unstable we use only member scope
   of receiver type + all descriptors from smart cast possible types
   that has incompatible signature. If we'd include all of them and
   choose one as more specific, and it would lead to false
   SMART_CAST_IMPOSIBLE (see test unstableSmartCast.kt)

 #KT-3996 Fixed
 #KT-10315 Fixed
2015-12-15 16:18:31 +03:00
Denis Zharkov
8d0c3281cd Choose first non-flexible when selecting most specific 2015-12-15 16:18:31 +03:00
Dmitry Petrov
02311538d6 Refactor createAntBindFakeOverride.
Drop unneeded helper functions from overridingUtils.kt
2015-12-15 16:18:30 +03:00
Ilya Gorbunov
19a6cc74de Build Markdown from sources tagged with forKotlin tag 2015-12-15 16:08:55 +03:00
Dmitry Jemerov
c83b6ed3a5 Inspection for migrating Kotlin stdlib API usages in Java code 2015-12-15 12:45:40 +01:00
Alexey Sedunov
3dfb9d2e5e Inline Variable: Move string template processing to InlineValHandler as it violates contract of the PsiElement.replace() 2015-12-15 13:31:35 +03:00
Alexey Sedunov
b5fad71b18 Inline Variable: Warn about non-Kotlin usages
#KT-8885 Fixed
2015-12-15 13:31:34 +03:00
Alexey Sedunov
ffb382e3bc PSI: Delete succeeding semicolon along with KtElement
#KT-5487 Fixed
2015-12-15 13:31:33 +03:00
Alexey Sedunov
d0b9b6a3b4 Introduce Parameter: Support conversion of local variables
#KT-9170 Fixed
2015-12-15 13:31:32 +03:00
Alexey Sedunov
fff011f60a Unit Test Tooling: Fix order of test method generation actions
#KT-9740 Fixed
2015-12-15 13:31:31 +03:00
Alexey Sedunov
258a6328a8 Pull Up: Default to "Make abstract" when moving to interface
#KT-9832 Fixed
2015-12-15 13:31:29 +03:00
Alexey Sedunov
04c6ea78c7 Name Suggester: Allow any Kotlin identifier in suggested names
#KT-10332 Fixed
2015-12-15 13:31:28 +03:00
Alexey Sedunov
ee9eb55b59 Extract Function: Fix NPE on parameter disabling. Fix parameter swapping 2015-12-15 13:31:27 +03:00
Mikhail Glukhikh
49e7417741 "as" in binary / unary expressions now checked only for original type conversion #KT-10384 Fixed
Also #KT-10386 Fixed
2015-12-15 12:02:33 +03:00
Mikhail Glukhikh
233e8e58e8 Code cleanup: get rid of unnecessary !! / as, fake warning comments and issues 2015-12-15 12:00:58 +03:00
Ilya Gorbunov
4ffd60cf52 Correct deprecation messages. 2015-12-14 21:07:33 +03:00
Ilya Gorbunov
43ce8222fc Soften deprecation level to ease migrations. 2015-12-14 21:05:13 +03:00
Pavel V. Talanov
46798ed845 Module configuration: 'idea-completion' depends on 'idea' at runtime
So that plugin.xml is in classpath when running completion tests separately
2015-12-14 17:35:17 +03:00
Stanislav Erokhin
cd80d9408d Extension function wins against function with no receiver 2015-12-14 16:49:29 +03:00
Dmitry Jemerov
a7503303d5 diagnostics for EA-73611 2015-12-14 13:28:45 +01:00
Mikhail Glukhikh
d2fce9b16d CFA classes rename: remove 'Kotlin' prefix 2015-12-14 15:25:43 +03:00
Dmitry Jemerov
8db3fb03f9 remove support for "package.foo.bar" syntax inside files 2015-12-14 13:22:54 +01:00
Mikhail Glukhikh
19084b8182 Additional codegen test for KT-10107 2015-12-14 12:52:43 +03:00
Mikhail Glukhikh
fdc9e9d7f5 Delegated properties never require backing field #KT-10107 Fixed 2015-12-14 12:26:37 +03:00
Ilya Gorbunov
9d753f24b7 Do not create regex to split path by directory separator char. 2015-12-14 06:31:44 +03:00
Ilya Gorbunov
a4f82a2dc4 Sensible behavior for File.startsWith and File.endsWith 2015-12-14 06:10:26 +03:00
Ilya Gorbunov
d2e22dc794 Fix tests on linux.
Add tests for File.startsWith
2015-12-14 06:10:24 +03:00
Ilya Gorbunov
645c78e2f4 Do not use assert in test, use assertTrue or assertEquals 2015-12-14 06:10:22 +03:00
Ilya Gorbunov
cb71e05c51 Deprecate File.directory, root, rootName as properties with unclear behavior. 2015-12-14 06:10:21 +03:00
Ilya Gorbunov
7c9b53c75c Do not convert separatorsToSystem in file path extensions.
Do not require network host in network share root to contain dot.
File.root now is always non-null to be consistent with File.toComponents().root.
Introduce invariantSeparatorsPath property.
Deprecate relativeTo to make it return File later. Introduce toRelativeString instead.
Introduce relativeToOrNull and relativeToOrSelf extensions.
2015-12-14 06:10:18 +03:00
Ilya Gorbunov
52eb9e4276 Refactor FilePathComponents: rename properties, deprecate constructor, rename filePathComponents extension. 2015-12-14 06:09:55 +03:00
Ilya Gorbunov
8deefd56db Rename FileTreeWalk public parameters and builder methods.
Directory filtering now is performed in newly introduced onEnter predicate.
2015-12-14 05:16:06 +03:00
Ilya Gorbunov
e24dbcefb6 Move all mutable state from FileTreeWalk to its iterator implementation, allowing this sequence to be iterated several times.
Introduce SingleFileState for single file walks.
Do not check isDirectory in DirectoryState constructor unless assertions are enabled.
2015-12-14 05:16:04 +03:00
Ilya Gorbunov
061803d7b1 Compare root of FilePathComponents according to case-sensitivity rules of current file system. 2015-12-14 05:16:02 +03:00
Ilya Gorbunov
4f2887df64 FileTreeWalk tests: do not remove failed directory from stack as leave is also called on failed dirs. 2015-12-14 05:16:01 +03:00
Ilya Gorbunov
162b152133 Improve File.relativeTo handling relative paths. Paths are normalized before calculating relative path. "x".relativeTo("../y") now is considered to have incompatible roots. 2015-12-14 05:15:59 +03:00
Ilya Gorbunov
9f5a972816 Improve resolve and resolveSibling for relative paths. 2015-12-14 05:15:57 +03:00
Ilya Gorbunov
923effe11d Change FilePathComponents parsing for file with empty name to enhance finding relative path between relative paths. 2015-12-14 05:15:55 +03:00
Ilya Gorbunov
6301c707cd Ensure resolveTo fails as expected.
Change UNC paths not to be misinterpreted on *nix.
2015-12-14 05:15:53 +03:00
Ilya Gorbunov
c23c2dbe85 FileTreeWalk: correct usage not to filter out subdirectories 2015-12-14 05:15:52 +03:00
Ilya Gorbunov
515d2cd3e7 FileTreeWalk.filter was dropped, use treeFilter otherwise filtering result becomes different.
Refactor walking tests.
2015-12-14 05:15:50 +03:00
Ilya Gorbunov
27551a8399 Make some io test classes non-nested as it's not supported by runners. 2015-12-14 05:15:48 +03:00
Ilya Gorbunov
33967a09f6 Unify minBy and maxBy for Maps with other families. 2015-12-14 04:56:47 +03:00
Ilya Gorbunov
33b366b9b9 Relax upper bound of T for minBy and maxBy to be nullable.
Swap type parameters of minBy and maxBy.
#KT-10099 Fixed
2015-12-14 04:56:45 +03:00
Ilya Gorbunov
58e93d5e1b Update testData for LoadBuiltinsTest and BuiltInDecompilerTest 2015-12-14 04:29:28 +03:00
Ilya Gorbunov
bf9d50ccc4 Fix testData for LookupTracker 2015-12-14 04:29:27 +03:00
Ilya Gorbunov
59a9e2549c Fix tests: codegen, completion, decompiler consistency, quickdoc, intentions, navigation, reference resolver, quick fixes 2015-12-14 04:29:25 +03:00
Ilya Gorbunov
f55b421853 Partially support default imports when analyzing ReplaceWith annotation pattern. 2015-12-14 04:29:23 +03:00
Ilya Gorbunov
d296d91272 Fix fq-names of top-level extensions in intentions. 2015-12-14 04:29:21 +03:00
Ilya Gorbunov
5df94da216 Fix fq-name of listOf in extract function. 2015-12-14 04:29:20 +03:00
Ilya Gorbunov
4dde59368c Fix tests not to duplicate array constructor definitions as they are available now in builtins. 2015-12-14 04:29:18 +03:00
Ilya Gorbunov
f509937037 Move array constructors to builtins module back to kotlin package. 2015-12-14 04:29:11 +03:00
Ilya Gorbunov
5aff07561d Move jvm annotations and class mapping intrinsics to runtime.jvm module to kotlin.jvm package.
Make annotationClass to be a property.
Deprecate with error javaClass property on KClass<T>
2015-12-14 03:51:07 +03:00
Ilya Gorbunov
feff5b2327 Stdlib generators: change values back to function. 2015-12-14 03:49:59 +03:00
Ilya Gorbunov
2d85c437cd Final moves: BigInteger and BigDecimal operations 2015-12-14 03:49:58 +03:00
Ilya Gorbunov
0ab33ab075 Final moves: map delegating accessors and timing utils, provide deprecated methods in the old place 2015-12-14 03:49:56 +03:00
Ilya Gorbunov
597f2c0a8c Final moves: map delegating accessors and timing utils 2015-12-14 03:49:55 +03:00
Ilya Gorbunov
16fbdcf107 For migration: provide deprecated classes inheriting multifile facade classes moved out of kotlin package. 2015-12-14 03:49:53 +03:00
Ilya Gorbunov
ae3135c770 For migration: Make an option "Xmultifile-facades-open" for compiler to generate open multifile facade classes. 2015-12-14 03:49:51 +03:00
Ilya Gorbunov
594d981094 Provide deprecated AbstractIterator in the old package kotlin.support. 2015-12-14 03:49:49 +03:00
Ilya Gorbunov
91b920f18e Move IndexedValue, IndexingIterable and IndexingIterator back to kotlin package 2015-12-14 03:49:48 +03:00
Ilya Gorbunov
871c5c66b4 Move code between packages (JS) 2015-12-14 03:49:46 +03:00
Ilya Gorbunov
dd2ae15531 Move code between packages. 2015-12-14 03:49:45 +03:00
Ilya Gorbunov
81e7826568 Move generated code between packages. 2015-12-14 03:49:43 +03:00
Alexander Udalov
477e25ae2f Remove Intrinsic annotation from *arrayOf functions 2015-12-14 03:49:41 +03:00
Ilya Gorbunov
09191622e5 Fix testData: import became not required. 2015-12-14 01:07:51 +03:00
Ilya Gorbunov
42565129ee Add packages kotlin.collections, kotlin.ranges, kotlin.sequences, and kotlin.text to default imports. 2015-12-14 01:07:49 +03:00
Alexander Udalov
65c5c99c68 Render decompiled annotations on enum entries 2015-12-13 17:49:44 +03:00
Alexander Udalov
6f347f351a Load annotations on compiled Kotlin enum entries
#KT-10339 Fixed
2015-12-13 03:52:42 +03:00
Alexander Udalov
3e2eb8c1a0 Serialize/deserialize annotations on enum entries
#KT-10338 Fixed
2015-12-13 03:52:41 +03:00
Alexander Udalov
5e421b4024 Improve type parameter bound diagnostic location
If there's only one erroneous bound (vast majority of cases), report it on the
bound; otherwise (to avoid reporting it several times) report on the type
parameter declaration
2015-12-13 02:06:07 +03:00
Michael Bogdanov
39d9b35e27 Force resolve companion in light class generation 2015-12-12 11:41:37 +03:00
Michael Bogdanov
a849f3f5d4 Fixed filtering error 2015-12-12 11:41:37 +03:00
Michael Bogdanov
4ad113d836 Removed redundant check 2015-12-12 11:41:36 +03:00
Michael Bogdanov
7c7786f7d0 Generate private methods in TraitImpl as private, don't generate delegation to private trait methods 2015-12-12 11:41:36 +03:00
Michael Bogdanov
a2d644f708 Fix for KT-9958: NoSuchMethodError when we call protected method from companion object
#KT-9958 Fixed
2015-12-12 11:41:35 +03:00
Michael Bogdanov
a7eea6e4dd Get rid of NeedSyntheticChecker 2015-12-12 11:41:35 +03:00
Denis Zharkov
b443f605ed Minor. Add load-java test checking that SamAdapterOverridabilityCondition is on 2015-12-11 22:41:03 +03:00
Denis Zharkov
871fe7680b Load special override as HIDDEN in case of signature clash
#KT-10151 Fixed
2015-12-11 22:41:03 +03:00
Denis Zharkov
45c0bc3610 Add 'subClassDescriptor' parameter to ExternalOverridabilityCondition 2015-12-11 22:41:03 +03:00
Denis Zharkov
417ff281ee Split getOverriddenBuiltinWithJvmDescriptor into two extensions 2015-12-11 22:41:02 +03:00
Mikhail Glukhikh
fe78f944a6 Private setter for open property: is now an error, not a warning 2015-12-11 18:54:40 +03:00
Mikhail Glukhikh
00504a3f6d Private setter for open property: take containing class modality into account #KT-10325 Fixed 2015-12-11 18:54:28 +03:00
Dmitry Jemerov
470dfc9bec remove "Jet" from names of classes related to resolve/scopes 2015-12-11 16:07:13 +01:00
Stanislav Erokhin
39b6637c7c Fix exception from InvokeProcessor when we get invoke from extension function type. 2015-12-11 17:01:04 +03:00
Stanislav Erokhin
616bb444ec Minor. strip explicit receiver for variable call if needed. 2015-12-11 17:01:03 +03:00
Stanislav Erokhin
1890b8cbd3 Removed InvokeOnExtensionFunctionWithExplicitReceiverFix 2015-12-11 17:01:03 +03:00
Stanislav Erokhin
dd24fd47f7 Update control flow test data for tower resolution algorithm
- locals win
- drop old invokeExtension convention
2015-12-11 17:01:02 +03:00
Stanislav Erokhin
79b30dddf9 Update lookupTracker test data for tower resolution algorithm 2015-12-11 17:01:02 +03:00
Alexander Udalov
239502368a Update test data for tower resolution algorithm
- locals win
- unary calls to plus/minus are not supported in favor of unaryPlus/unaryMinus
- unqualified nested classes are temporarily reported as unresolved
- function without receiver win against extension function
- explicit import win against star import
2015-12-11 17:01:02 +03:00
Stanislav Erokhin
66a031f7a0 Do not enter in recursion for implicit invoke on variable with un inferred type 2015-12-11 17:01:01 +03:00
Stanislav Erokhin
1dca49cecc Workaround for tower resolution algorithm in kotlin code. Will be investigated. 2015-12-11 17:01:01 +03:00
Stanislav Erokhin
cbe1ffed55 Use new tower resolution algorithm by default 2015-12-11 17:01:00 +03:00
Natalia Ukhorskaya
f699adda33 Stepping: skip methods deleting to static method call of DefaultImpl.
Support smart step into interface methods with implementation
 #KT-4803 Fixed
2015-12-11 16:21:05 +03:00
Natalia Ukhorskaya
ea8de883ac Implement 'Skip simple getters' for debugger 2015-12-11 16:21:04 +03:00
Michael Bogdanov
b950bf0e6e Fix for KT-10259: Proguard can't find generated lambda class of lambda nested inside object?.let lambda
#Fixed KT-10259
2015-12-11 16:14:59 +03:00
Michael Bogdanov
9452c200a0 Keep typeRemapper in inlining context instead of hashMap for transformed types 2015-12-11 16:14:58 +03:00
Mikhail Glukhikh
6fb871a088 A set of additional tests for complex expressions DFA 2015-12-11 15:17:37 +03:00
Mikhail Glukhikh
d024045638 Data flow values for Elvis / parenthesized expressions, smart casts on them 2015-12-11 15:17:29 +03:00
Mikhail Glukhikh
745a3aeeac Accurate representation of smart casts on complex expressions 2015-12-11 15:17:25 +03:00
Mikhail Glukhikh
7cd867b936 DFA: take into account if / else and when expression assignments #KT-10002 Fixed
Also #KT-7479 Fixed
2015-12-11 15:17:22 +03:00
Mikhail Glukhikh
e7fc6bcc6e BuiltIns refactoring: getEnumEntry 2015-12-11 11:11:46 +03:00
Mikhail Glukhikh
c8b50eec1e Enum.values: deprecation (warning) --> deprecation (error) 2015-12-11 11:11:42 +03:00
Mikhail Glukhikh
521b216602 Migration: Enum.values to Enum.values() 2015-12-11 11:11:38 +03:00
Mikhail Glukhikh
3254641c5a Local sealed classes: warning --> error 2015-12-11 11:11:34 +03:00
Dmitry Petrov
0fe74a8b43 COMMA_IN_WHEN_CONDITION_WITHOUT_ARGUMENT is an ERROR now.
Migrated code.
Updated test data in IDE tests.
Dropped whenWithRangeTestsAndMultiConditions.kt:
"Introduce subject" is not applicable to 'when' with ||-ed conditions.
2015-12-11 10:43:16 +03:00
Alexey Tsvetkov
199827635f Reserve 'typeof' as a keyword 2015-12-10 21:26:41 +03:00
Alexey Sedunov
4c3f620255 Minor: Fix compilation 2015-12-10 21:03:44 +03:00
Alexey Sedunov
f87d2d1fcc Introduce Refactorings: Implement trimming renderer for expression
chooser. Do not suggest parenthesized expressions
 #KT-9028 Fixed
2015-12-10 20:07:26 +03:00
Alexey Sedunov
ae2fc19fe5 Introduce Parameter/Lambda Parameter: Parenthesize binary expressions if operation reference starts with a new line 2015-12-10 20:07:24 +03:00
Alexey Sedunov
354e1dc337 Extract Function: Parenthesize binary expressions if operation reference starts with a new line 2015-12-10 20:07:23 +03:00
Alexey Sedunov
1824f10f07 Introduce Variable: Parenthesize binary expressions if operation references starts with a new line
#KT-3933 Fixed
2015-12-10 20:07:22 +03:00
Alexey Sedunov
ffc8b6fd89 Safe Delete: Move test classes and test data to refactoring directory 2015-12-10 20:06:34 +03:00
Alexey Sedunov
a76f43b66c Safe Delete: Skip internal usages of class constructors when deleting class itself
#KT-8857 Fixed
2015-12-10 20:06:31 +03:00
Alexey Sedunov
f50059a11a Create from Usage: Implement "Create function" on callable references
#KT-10283 Fixed
2015-12-10 20:06:30 +03:00
Alexey Sedunov
87aebd2cdf Create from Usage: Forbid "Create local variable/parameter/property" on callable references
#KT-10283 In Progress
2015-12-10 20:06:27 +03:00
Alexey Sedunov
44743aade5 Create from Usage: Allow type parameters in the receiver position
#KT-7497 Fixed
2015-12-10 20:06:26 +03:00
Alexey Sedunov
76cf284b77 Introduce Variable: Do not suggest type-based names for multi-declaration entries if component function corresponds to value parameter
#KT-10287 Fixed
2015-12-10 20:06:24 +03:00
Yan Zhulanow
15faa6610c Android Extensions: do not cache package fragment provider with synthetic properties (KT-10318) 2015-12-10 19:38:38 +03:00
Yan Zhulanow
ac9a1350c2 Application package from manifest file has a higher priority than the applicationId value in build.gradle (KT-10320) 2015-12-10 19:38:38 +03:00
Dmitry Jemerov
009e3f9cd7 rename PSI classes according to current terminology:
KtMultiDeclaration(Entry) -> KtDestructuringDeclaration(Entry)
KtFunctionLiteralExpression -> KtLambdaExpression
KtFunctionLiteralArgument -> KtLambdaArgument
KtDelegationSpecifierList -> KtSuperTypeList
KtDelegationSpecifier -> KtSuperTypeListEntry
KtDelegatorToSuperClass -> KtSuperTypeEntry
KtDelegatorToSuperCall -> KtSuperTypeCallEntry
KtDelegationByExpressionSpecifier ->KtDelegatedSuperTypeEntry
2015-12-10 16:15:13 +01:00
Alexey Tsvetkov
ef4b3c99f4 Minor: remove default values for markChunk parameters 2015-12-10 18:03:20 +03:00
Alexey Tsvetkov
6a74b1c8bf Rebuild only kotlin when cache version is changed 2015-12-10 18:03:17 +03:00
Alexey Tsvetkov
49778d2fb6 Minor: move buildFinished closer to buildStarted 2015-12-10 18:03:13 +03:00
Natalia Ukhorskaya
d10c3ffbe4 Fix exception in EE for inline function invocation
#KT-10217 Fixed
2015-12-10 14:42:00 +03:00
Natalia Ukhorskaya
58d62fde4d Add test for smart step into in method with default args
#KT-4803 In Progress
2015-12-10 14:41:58 +03:00
Natalia Ukhorskaya
1dbe560734 Run Code Clean up for org.jetbrains.kotlin.idea.debugger 2015-12-10 14:41:56 +03:00
Natalia Ukhorskaya
1ca6c695e6 Remove println() from debugger testData 2015-12-10 14:41:53 +03:00
Natalia Ukhorskaya
9b8e5c5684 Refactor KotlinDebuggerTestCase to avoid StubIndexReindex between test invocation 2015-12-10 14:41:51 +03:00
Natalia Ukhorskaya
42119b311d Skip whitespaces as context elements of codeFragmnets
#KT-10171 Fixed
2015-12-10 14:41:49 +03:00
Natalia Ukhorskaya
49e484d796 Do not throw exception analyzing imports in KtCodeFragments 2015-12-10 14:41:47 +03:00
Natalia Ukhorskaya
08c29b7325 Fix step out from inline function literal placed at one line
#KT-10187 Fixed
2015-12-10 13:11:40 +03:00
Natalia Ukhorskaya
3b3dbbab04 Evaluate expression for variable of function type
#KT-10199 Fixed
2015-12-10 13:11:39 +03:00
Natalia Ukhorskaya
2bc2d81486 Debugger: correctly box parameter types in case of generics
#KT-10180 Fixed
2015-12-10 13:11:39 +03:00
Pavel V. Talanov
280e00981f Load java: load annotations on enum entries 2015-12-10 11:12:23 +03:00
Pavel V. Talanov
fb19552920 Mark enum entries that are deprecated in Kotlin as deprecated in bytecode 2015-12-10 11:12:22 +03:00
Zalim Bashorov
5bf8b4d946 Allow to use "static" part of class in own constructors by short name, including in primary constructor 2015-12-09 21:42:32 +03:00
Mikhail Glukhikh
f319b1b93a Sealed classes are not taken into account in live templates 2015-12-09 19:27:50 +03:00
Mikhail Glukhikh
9a4eb2a368 Refactoring: ClassDescriptor.isFinal, no more Modality.isOverridable 2015-12-09 19:27:47 +03:00
Mikhail Glukhikh
fb406bfc24 Refactoring: CallableMemberDescriptor.isOverridable 2015-12-09 19:27:04 +03:00
Mikhail Glukhikh
c73f01927a 'sealed' is now not 'final' by default + related code changes #KT-10266 Fixed 2015-12-09 19:19:04 +03:00
Mikhail Glukhikh
5b72afe8a0 J2K: Modality.kt 2015-12-09 19:19:00 +03:00
Mikhail Glukhikh
d80206376a Modality.java --> Modality.kt 2015-12-09 19:18:56 +03:00
Nikolay Krasko
8e71006e86 Add test JDK 8 module to be able reparse IDEA step 2015-12-09 19:16:37 +03:00
Pavel V. Talanov
da02ed9057 GroupingMessageCollector: ensure that messages without location are reported first
Should fix CompileKotlinAgainstCustomBinariesTest.testIncompleteHierarchyInJava(Kotlin) tests
2015-12-09 18:54:15 +03:00
Pavel V. Talanov
2e971b13aa KotlinGoToTest: test go to for builtIn classes and functions 2015-12-09 18:51:32 +03:00
Pavel V. Talanov
7e6bed7ad8 Decompiled text: should always render all modifiers even if we don't feel like it 2015-12-09 18:51:31 +03:00
Pavel V. Talanov
fee19ad9de CallableClsStubBuilder: correctly decide whether callable is extension 2015-12-09 18:51:30 +03:00
Pavel V. Talanov
deb6410a5c Add test for builtIn stub builder and decompiler
These test are by no means exhaustive, the correctness of the subsystem relies on it sharing code with well-tested js-decompilation
2015-12-09 18:51:30 +03:00
Pavel V. Talanov
5cc04e41fe Enable keyword highlighting in .kotlin_class, .kotlin_package files 2015-12-09 18:51:29 +03:00
Pavel V. Talanov
c40d6af1e5 Decompile builtins (kotlin_class and kotlin_package files)
The main purpose of this is to be able to index builtin declarations and enable go to symbol/class functionality in ide
Also it makes sense to show builtin classes (Any, Int ...) as classes when browsing kotlin-runtime.jar

Refactor decompiler code to eliminate existing and potential duplication
Share the code between js (kjsm) decompilation and builtin decompilation heavily
2015-12-09 18:51:28 +03:00
Pavel V. Talanov
6164566cad Extract duplicate logic between javascript and builtins serialization/deserialization 2015-12-09 18:51:27 +03:00
Pavel V. Talanov
34c3c04ead Implement NameResolverImpl#getPackageFqName(index) 2015-12-09 18:51:26 +03:00
Pavel V. Talanov
5846769b43 J2K NameResolverImpl: convert 2015-12-09 18:51:26 +03:00
Pavel V. Talanov
9ff6be6f0f J2K NameResolverImpl: rename file 2015-12-09 18:51:25 +03:00
Pavel V. Talanov
e458534c93 Write package_fq_name to for Package message when serializing builtins 2015-12-09 18:51:24 +03:00
Pavel V. Talanov
f05de6d6eb Add package_fq_name field extension to builtins.proto 2015-12-09 18:51:24 +03:00
Pavel V. Talanov
9a2442bba6 Decompiler, refactor: reduce the number of classes needed to define a decompiler 2015-12-09 18:51:23 +03:00
Pavel V. Talanov
dc34d4fc31 Decompiler, minor: fix some strange code 2015-12-09 18:51:22 +03:00
Pavel V. Talanov
136e8d9d02 Refactor: repackage decompiler code and explicitly extract class file and js metafile parts 2015-12-09 18:51:21 +03:00
Dmitry Petrov
70c200d265 Fix diagnostic messages for properties.
Fix IDE tests.
Update quick fixes in IDE
(TODO: review new inheritance-related diagnostics with regards to quick fixes)
2015-12-09 17:43:48 +03:00
Dmitry Petrov
94bea54db3 Change "most specific return type" definition for fake overrides.
Given overridden descriptors D = d[i].
1. Find D*, subset of D:
  returnType(d* from D*) <: returnType(d) for each d from D.
  Always prefer var to val.
2. Prefer non-flexible return type to flexible.

Check for var/val overrides properly
(NB: this will report PROPERTY_TYPE_MISMATCH_ON_OVERRIDE
for all properties, not just overrides involving vars as it was before).
2015-12-09 17:43:48 +03:00
Dmitry Petrov
594039ac42 Delegation and overrides:
- Tests.
- No need for a separate diagnostic message regarding
return/property type conflict on override by delegation:
it is always a conflict of inherited signatures.
2015-12-09 17:43:48 +03:00
Dmitry Petrov
84824b1024 Fix KT-10194: skip incorrect delegates. 2015-12-09 17:43:48 +03:00
Dmitry Petrov
ef72c594c4 KT-1934 & KT-10197:
Naive approximation for fake overriding signature:
use upper bound for flexible types.
Check delegation errors.
2015-12-09 17:43:47 +03:00
Dmitry Petrov
6e2d42daf9 J2K: DelegationResolver.kt: convert to Kotlin 2015-12-09 17:43:47 +03:00
Dmitry Petrov
8f5df45edc J2K: DelegationResolver.kt 2015-12-09 17:43:47 +03:00
Dmitry Petrov
2fcb7e532b KT-1934: Fixing synthetic accessors hierarchy 2015-12-09 17:43:47 +03:00
Dmitry Petrov
135c30323b KT-1934 Check inherited signatures for compatibility
Overridden signatures should have compatible return types
(equal types for 'var').
Only relevant overrides should be taken into account.
Refactor inherited signatures check,
introduce a strategy interface for problem reporting.
2015-12-09 17:43:47 +03:00
Dmitry Jemerov
18e343d405 Merge pull request #795 from mcgee/KT-10124
#KT-10124 Fixed
2015-12-09 15:28:31 +01:00
Dmitry Jemerov
863e32c5cd Merge pull request #791 from mcgee/KT-9938
#KT-9938 Fixed
2015-12-09 15:17:31 +01:00
Andrey Breslav
83189013c6 Minor. Drop deprecated unary operator names from JS back-end 2015-12-09 17:10:30 +03:00
Andrey Breslav
0a0e4f1ba2 Minor. Clean up the code in OperatorChecker.kt 2015-12-09 17:10:30 +03:00
Andrey Breslav
3eeab68261 Signature checks fixed for plus() and minus() 2015-12-09 17:10:30 +03:00
Andrey Breslav
421f84e05a Error messages fixed for deprecations that have been made errors 2015-12-09 17:10:30 +03:00
Andrey Breslav
434082cadb 'yield' reserved as a keyword 2015-12-09 17:10:30 +03:00
Alexey Tsvetkov
e6bba01798 Increment cache version
Wildcard generation could cause source level incompatibility, so we should rebuild
2015-12-09 16:23:35 +03:00
Alexey Tsvetkov
c567376e35 Save class hierarchy to incremental caches
Author:    Alexey Tsvetkov <Alexey.Tsvetkov@jetbrains.com>
2015-12-09 16:23:35 +03:00
Alexey Tsvetkov
6ba5dcaa06 Simplify collection externalizers 2015-12-09 16:23:35 +03:00
Nikolay Krasko
8a95f23a23 Adjust formatting for FILE_ANNOTATION_LIST 2015-12-09 16:01:56 +03:00
Nikolay Krasko
966ad9d3b6 Move idea-repl module to ide group 2015-12-09 16:01:55 +03:00
Nikolay Krasko
a2d6bd09f3 Minor: allow to use ${file} directive in action text to reference file name 2015-12-09 16:01:53 +03:00
Nikolay Krasko
3374ac7606 Minor: More tests for warnings suppression 2015-12-09 16:01:52 +03:00
Nikolay Krasko
3c5b02e54a Minor: better diagnostic message in tests 2015-12-09 16:01:50 +03:00
Nikolay Krasko
789738c45f Minor: add fqname to dictionary 2015-12-09 16:01:49 +03:00
Dmitry Jemerov
e97e82d119 use terms "lambda expression" and "anonymous function" instead of "function literal" and "function expression" 2015-12-09 13:55:40 +01:00
mcgee
4a0e33003b #KT-9938 Fixed
Top level test case is added
2015-12-09 07:32:41 +03:00
Alexander Udalov
9a01c0d9cb Test that no delegated properties are used in critical classes in reflection 2015-12-08 22:59:00 +03:00
Stanislav Erokhin
cfed28c2ff Use CastImplicitClassReceiver for implicit this with smart cast 2015-12-08 20:42:55 +03:00
Stanislav Erokhin
b7e4fdf4d5 Add extensionReceiver to ScopeTowerLevel & use it in ImportingScopeBasedTowerLevel 2015-12-08 20:42:55 +03:00
Dmitry Jemerov
57b5588498 rename "Jet" to "Kotlin" in CFG classes 2015-12-08 16:54:09 +01:00
Dmitry Jemerov
3275542426 one more missing invokeLater() for plugin update checks (EA-76738 - Throwable: DebugUtil.currentStackTrace) 2015-12-08 16:45:40 +01:00
Dmitry Jemerov
d65c8fb06c double-check action parameters (EA-76026 - KNPE: ShowExpressionTypeAction.actionPerformed) 2015-12-08 16:45:39 +01:00
Dmitry Jemerov
0ec57e7fee add missing scope checks for highlight usages (EA-75896)
#KT-10038 Fixed
2015-12-08 16:45:19 +01:00
Stanislav Erokhin
10a13e737e Minor. Add isComputing to DeferredType 2015-12-08 17:29:55 +03:00
Stanislav Erokhin
11410000b4 Minor. Do not resolve implicit invoke for callable reference 2015-12-08 17:29:55 +03:00
Stanislav Erokhin
859a8adc31 Fix priority for functions without infix or operator modifier 2015-12-08 17:29:54 +03:00
Stanislav Erokhin
64b101785f Minor. Introduce util function 2015-12-08 17:29:54 +03:00
Alexey Sedunov
e82e4bcfc8 Inline Variable: Show error message on attempt to inline unused declaration 2015-12-08 16:21:08 +03:00
Alexey Sedunov
5c88a1c63e Inline Variable: Parenthesize arguments of the form "e1 < e2" if the next argument has the form "e1 > e2"
#KT-8261 Fixed
2015-12-08 16:21:07 +03:00
Alexey Sedunov
b2bdb8ed02 Inline Variable: Inline string template entries
#KT-7654 Fixed
2015-12-08 16:21:05 +03:00
Alexey Sedunov
0af2243245 J2K: KotlinInlineValHandler (conversion and refactoring) 2015-12-08 16:21:03 +03:00
Alexey Sedunov
2fef2763ab J2K: KotlinInlineValHandler (rename to .kt) 2015-12-08 16:21:02 +03:00
Alexey Sedunov
f4135a0a9f J2K: AbstractInlineTest 2015-12-08 16:21:00 +03:00
Alexey Sedunov
9df3ce018b J2K: AbstractInlineTest (rename to .kt) 2015-12-08 16:20:58 +03:00
Alexey Sedunov
f6b374f829 Inline Variable: Fix dialog text for non-local variables
#KT-6365 Fixed
2015-12-08 16:20:57 +03:00
Alexey Sedunov
e517cbcf78 Quick Fixes: Implement "Rename unresolved reference" fix
#KT-8795 Fixed
2015-12-08 16:20:56 +03:00
Alexey Sedunov
d850d7bbad Change Signature: Parenthesize functional type of receiver in the signature preview
#KT-8737 Fixed
2015-12-08 16:20:53 +03:00
Alexey Sedunov
8f8acf7a83 Pull Up: Drop default parameter values in function which becomes overriding. Disable function with default values if target class is the Java one
#KT-9833 Fixed
2015-12-08 16:20:52 +03:00
Alexey Sedunov
80051b8303 Create from Usage: Locate new declaration using RangeMarker
#KT-9197 Fixed
2015-12-08 16:20:50 +03:00
Alexey Sedunov
99c88cb0c5 Line Marking: Use new-style icons for Kotlin test classes/functions
#KT-10235 Fixed
2015-12-08 16:20:48 +03:00
Alexey Sedunov
8fcda32287 Unit Test Tooling: Support Go to Test/Create Test actions for top-level declarations
#KT-10133 Fixed
2015-12-08 16:20:47 +03:00
Denis Zharkov
ecac0f177b Fix order of type parameters loaded from PSI
#KT-10285 Fixed
2015-12-08 15:46:34 +03:00
Mikhail Glukhikh
d08f6f8238 DataFlowInfo Refactoring: getNullability() --> getCollectedNullability(); getPossibleTypes() --> getCollectedTypes() 2015-12-08 11:23:44 +03:00
Mikhail Glukhikh
57b3bc0496 Regression: getPredictableNullability for unnecessary safe call check #KT-10276 Fixed 2015-12-08 11:23:35 +03:00
Mikhail Glukhikh
2330ce2c28 Optimization: do not collect not-null types in DataFlowInfo.equate 2015-12-08 11:22:33 +03:00
Mikhail Glukhikh
5c9e55f3fb DFA bug fix: assignment of unstable to stable uses predictable type set (see test) 2015-12-08 10:13:38 +03:00
Mikhail Glukhikh
2e73bcb3a6 DFA bug fix: assignment of unstable to stable uses predictable nullability (see test) 2015-12-08 10:13:34 +03:00
Mikhail Glukhikh
96d0c4a1db Nullability bug fix in the source code 2015-12-08 10:13:22 +03:00
Mikhail Glukhikh
bfad9bd87f More exact unnecessary not-null assertion message #KT-3688 Fixed 2015-12-08 10:13:14 +03:00
Stanislav Erokhin
75245b3046 Rewrite TowerLevels. 2015-12-08 00:16:17 +03:00
Stanislav Erokhin
11c86405bf Fix ClassKind for Serializable and change ClassKind to INTERFACE for error classes. 2015-12-08 00:16:16 +03:00
Stanislav Erokhin
f2e60a0e11 Minor. Have to deal with error descriptors like previous resolution does. 2015-12-08 00:16:16 +03:00
Anton Sukhonosenko
da5f71773a #KT-9938 Fixed
Code review fixes
2015-12-07 22:48:47 +03:00
Zalim Bashorov
1e0b133e19 Find Nothing only in own arguments of generic type to make type raw and generate ''?" for contravariant position instead of use raw type 2015-12-07 19:25:59 +03:00
Alexander Udalov
fa77808319 Rename UpperBoundCheckerTask -> UpperBoundCheckRequest 2015-12-07 15:47:47 +03:00
Alexander Udalov
2dce7ad1e2 Add test on "inconsistent type parameter bounds"
It seems that all tests on that diagnostic were replaced in previous commits by
"repeated bound" and "no other bounds except a type parameter bound"
diagnostics
2015-12-07 15:47:47 +03:00
Alexander Udalov
d3c17ec337 Report error when type parameter has a type parameter bound and any other bound
To prevent issues with erasure on JVM: it's unclear what such type parameter
should be erased to
2015-12-07 15:47:47 +03:00
Alexander Udalov
b1fa740341 Do not report "inconsistent bounds" when there are repeated bounds
Also slightly refactor DeclarationsChecker#checkSupertypesForConsistency
2015-12-07 15:47:47 +03:00
Alexander Udalov
5fbb9bfe3b Report error on repeated upper bounds for type parameters 2015-12-07 15:47:47 +03:00
Alexander Udalov
21e64e02bd Report error on more than one class bound for type parameters
Such code may behave unexpectedly when compiled to JVM
2015-12-07 15:47:47 +03:00
Alexander Udalov
5541224288 Minor, add test on annotation on type argument 2015-12-07 15:47:47 +03:00
Anton Sukhonosenko
6b49ac6b46 #KT-9938 Fixed 2015-12-06 01:44:57 +03:00
Ilya Gorbunov
dc70c0d31e Move sequence interface definition to a separate file.
Merge SequnceJVM content into Sequences.
2015-12-05 02:40:27 +03:00
Ilya Gorbunov
a15ca7c374 Minor: rename file with sequences 2015-12-05 02:40:25 +03:00
Mikhail Glukhikh
5729855e4f Type parameter as result type: more precise expected type definition #KT-5385 Fixed
Tests for KT-5385 KT-10223 KT-7800 KT-7817 + something related
2015-12-04 19:00:24 +03:00
Natalia Ukhorskaya
51abb021bc Correct resource path for flavors in android-extensions-plugin 2015-12-04 17:21:37 +03:00
Natalia Ukhorskaya
c523817213 Do not cache AndroidModule in IDEAndroidLayoutXmlManager 2015-12-04 17:21:36 +03:00
Mikhail Glukhikh
408dd9bc9d Optimization: data flow info no more stores supertypes of the variable original type as possible types (dynamic is an exception) 2015-12-04 11:40:16 +03:00
Denis Zharkov
9c73502bdc Partially revert "Fix project source to overcome bootstrap problem"
Adjust code to new generic signatures generated by Kotlin compiler
This reverts commit 0fd2484bc9.
2015-12-04 10:19:48 +03:00
Nikolay Krasko
a19708693b Update kotlin run configuration editor
- Remove deprecated component for selecting JRE
- Update module selector
2015-12-04 01:03:26 +03:00
Nikolay Krasko
8683582c40 Fix red code in AbstractEditorForEvaluateExpressionTest.kt 2015-12-03 18:59:55 +03:00
Nikolay Krasko
703f39f492 Add icon for the project 2015-12-03 18:59:55 +03:00
Denis Zharkov
95cecdbc42 Support overrides of generic methods with erased version in Java 2015-12-03 18:19:36 +03:00
Denis Zharkov
4f06cece37 Refactor external overidability conditions
Before this change they could only negatively affect on result
Now they may force success result

Also refine overridavility condition for java fields:
two java fields having the same name are seen as overrides even
if they have different type
2015-12-03 18:19:36 +03:00
Denis Zharkov
8838e46578 Do not create KotlinTypeImpl with error scope while erasing
See assertion in KotlinTypeImpl init block
2015-12-03 18:19:36 +03:00
Denis Zharkov
e2b51f30ed Extract 'doSubstitute' parameters into SubstitutionConfiguration 2015-12-03 18:19:36 +03:00
Natalia Ukhorskaya
a197fc8cb8 Fix NoSuchMethod in android-extensions-plugin
#KT-10263 Fixed
2015-12-03 16:17:24 +03:00
Michael Bogdanov
4b8017e34b Fix for KT-7999: Wrong result when use nullable types as reified parameter, KT-8043: Unsafe cast to reified parameter throws NPE instead of TypeCastException
#KT-7999 Fixed
  #KT-8043 Fixed

~
2015-12-03 15:09:54 +03:00
Dmitry Jemerov
3478a6fb6c download markdown tagged with forKotlin, not latest build from master 2015-12-03 11:57:55 +01:00
Dmitry Jemerov
ce9012c352 fix compilation after changes in markdown library 2015-12-02 19:44:46 +01:00
Alexey Tsvetkov
d53cd3c70b Save system properties in incremental jps tests 2015-12-02 20:56:38 +03:00
Alexey Tsvetkov
73444ce59b Minor: refactor shouldRebuildBecauseVersionChanged 2015-12-02 20:56:37 +03:00
Alexey Tsvetkov
7fff17ba7c Minor: rename CACHE_DIRECTORY_NAME->KOTLIN_CACHE_DIRECTORY_NAME 2015-12-02 20:56:37 +03:00
Alexey Tsvetkov
7063e1f56a Do not mark dirty same files 2015-12-02 20:56:37 +03:00
Alexey Tsvetkov
4800cff87f Do not recompile files compiled in current round 2015-12-02 20:56:37 +03:00
Alexey Tsvetkov
19089f8b17 Prevent processing changes if all kotlin in chunk was rebuilt 2015-12-02 20:56:37 +03:00
Alexey Tsvetkov
87f09ab5b0 Introduce FSOperationsHelper to mark files dirty 2015-12-02 20:56:37 +03:00
Alexey Tsvetkov
98e0905eb3 Minor: add java to test case 2015-12-02 20:56:37 +03:00
Alexey Tsvetkov
3d3d670cd7 Minor: move check inside hasDirtyOrRemovedKotlin 2015-12-02 20:56:37 +03:00
Alexey Tsvetkov
60a8db1c6c Do not use USER_DATA to preserve data between compilation rounds 2015-12-02 20:56:36 +03:00
Alexey Tsvetkov
a447c39f69 Kotlin incremental cache version change should not affect java only modules 2015-12-02 20:56:36 +03:00
Alexey Tsvetkov
b1b0da5228 Minor: add description to key 2015-12-02 20:56:36 +03:00
Alexey Tsvetkov
c9012b10c5 Simplify lazy caches tests 2015-12-02 20:56:36 +03:00
Alexey Tsvetkov
aea6ad0f0c Move CacheVersion properties to constructor 2015-12-02 20:56:36 +03:00
Alexey Tsvetkov
e90dc047bd Test turning incremental compilation on/off 2015-12-02 20:56:36 +03:00
Alexey Tsvetkov
a8b551e518 Test versioning of experimental incremental compilation 2015-12-02 20:56:36 +03:00
Alexey Tsvetkov
69c906014f Enable separate versioning for experimental incremental compilation 2015-12-02 20:56:35 +03:00
Pavel V. Talanov
d20fb5ddd7 BuilderFactoryForDuplicateSignatureDiagnostics: report diagnostics lazily 2015-12-02 20:44:53 +03:00
Dmitry Jemerov
05a62c5892 avoid unnecessary reads of file content during indexing 2015-12-02 18:09:19 +01:00
Dmitry Jemerov
f9306d9c3c KotlinBinaryClassCache: J2K 2015-12-02 18:09:18 +01:00
Dmitry Jemerov
3abbdb4d15 KotlinBinaryClassCache: rename to .kt 2015-12-02 18:09:17 +01:00
Anton Sukhonosenko
5bc70b3150 #KT-10124 Fixed 2015-12-02 20:03:13 +03:00
Mikhail Glukhikh
dd3b85dca3 Pseudocode refactoring: repeatPart + repeatWhole 2015-12-02 18:15:03 +03:00
Mikhail Glukhikh
ea3a65d0b8 Additional tests for KT-10243 2015-12-02 18:14:59 +03:00
Pavel V. Talanov
b9ce9f8576 Script, IDE: tweak extract based refactorings to behave better in scripts
Fix not being able to invoke introduce variable for top level script expression
Prohibit introduce parameter and introduce property for scripts on top level
Basic test for introduce function (produces red code atm)
2015-12-02 15:14:25 +03:00
Alexey Sedunov
ffd8863875 Extract Function: Add support for member extension properties 2015-12-02 13:54:05 +03:00
Alexey Sedunov
39b46bb3ef Extract Function: Add support for member extension functions 2015-12-02 13:54:04 +03:00
Alexey Sedunov
6abf13be41 Extract Function: Consider member property with invoke() a receiver candidate
#KT-9774 Fixed
2015-12-02 13:54:03 +03:00
Alexey Sedunov
03e1480476 Extraction Engine: Get rid of explicit element offset manipulation and use copyable user data instead 2015-12-02 13:54:02 +03:00
Alexey Sedunov
44bc937499 Shorten References: Fix removal of explicit companion references in the position of callee expression
#KT-10102
2015-12-02 13:54:01 +03:00
Alexey Sedunov
2dcc38b92f Create from Usage: Forbid "Create parameter/local variable/property" on label references
#KT-10119 Fixed
2015-12-02 13:54:00 +03:00
Alexey Sedunov
3c87ccc5ff Move File: Reimplement Move dialog for Kotlin files. Do not show "Search for references" option (consider it true in all cases)
#KT-10118 Fixed
2015-12-02 13:53:59 +03:00
Alexey Sedunov
bcadfd4661 Introduce Variable: Suggest choosing between single variable and
multi-declaration. Forbid multi-declaration for collections and arrays
 #KT-10242 Fixed
2015-12-02 13:46:47 +03:00
Ilya Chernikov
c1c6d0ee3a fixes after review 2015-12-02 10:30:56 +01:00
Ilya Chernikov
6313ecac1c another attempt to fix parallel compilation - enabling keepalive in compiler use sites, but in jps taking parallel compilation option into account, so it should be now not set in tests 2015-12-02 10:30:56 +01:00
Mikhail Glukhikh
60e457167d Creating deep copy of local function declaration instructions in CFA, regression test #KT-10243 Fixed 2015-12-01 23:40:50 +03:00
Stanislav Erokhin
36206ddf6d Minor. Enable assertion for dist. 2015-12-01 20:44:27 +03:00
Ilya Gorbunov
b7a50b333e Better replacement for containsAll, removeAll, retainAll with incompatible types. 2015-12-01 20:35:46 +03:00
Alexander Udalov
2821448dd8 Minor, simplify kdoc for KClass#qualifiedName 2015-12-01 20:20:48 +03:00
Stanislav Erokhin
8807cd828f Removed MemberScope.getPackage 2015-12-01 15:38:04 +03:00
Stanislav Erokhin
846fb397c4 Collect all candidates for completion 2015-12-01 15:38:04 +03:00
Stanislav Erokhin
2b66af29aa Added debug info 2015-12-01 15:38:03 +03:00
Stanislav Erokhin
22b14cfc5c Fix missing smart casts 2015-12-01 15:38:03 +03:00
Stanislav Erokhin
3776e5698f Removed hidden descriptors from new resolve 2015-12-01 15:38:03 +03:00
Stanislav Erokhin
e92c314b46 Base dynamic support in new resolve 2015-12-01 15:38:02 +03:00
Stanislav Erokhin
2987576a0a Minor. fix applicability level for UsedSmartCastForDispatchReceiver 2015-12-01 15:38:02 +03:00
Stanislav Erokhin
5edadfe8ea Refactor ScopeTowerProcessor 2015-12-01 15:38:01 +03:00
Stanislav Erokhin
bc49825f55 Fix testLib test 2015-12-01 15:38:01 +03:00
Pavel V. Talanov
aa1a08fe7a Minor, getModuleInfo: improve on failure messages 2015-12-01 14:53:16 +03:00
Pavel V. Talanov
bc816851f1 getModuleInfo: Provide utility to default to null instead of logging an error
Use it to workaround cases when java resolve references some unexpected classes/files, referencing non-physical Dummy.java in particular
2015-12-01 14:53:15 +03:00
Pavel V. Talanov
5e35be347c getModuleInfo: Correct module info for members of light classes for decompiled Kotlin classes 2015-12-01 14:53:12 +03:00
Natalia Ukhorskaya
dc60c025c3 Support Evaluate Expression for renamed local variables in inline function
#KT-10179 Fixed
2015-12-01 11:48:43 +03:00
Natalia Ukhorskaya
cd5e406876 Minor: fix warnings 2015-12-01 11:48:41 +03:00
Natalia Ukhorskaya
a1f3c5381e Rename local variable for this in inline function 2015-12-01 11:48:41 +03:00
Michael Bogdanov
a932315bf9 Rename local vars from inlined function
#KT-9798 Fixed
2015-12-01 11:48:40 +03:00
Natalia Ukhorskaya
5073b1d372 Don't skip inlined this 2015-12-01 11:48:39 +03:00
Natalia Ukhorskaya
29778311e8 Drop unnecesary logic about additional context for lambda in debugger 2015-12-01 11:48:38 +03:00
Dmitry Petrov
f34f7556bc KT-10192 got fixed due to new if/when check
(which doesn't depend on the expected type for expression)
 #KT-10192 Fixed
2015-12-01 10:36:40 +03:00
Dmitry Petrov
76931affc6 KT-10139:
Non-exhaustive 'when' without 'else' used in expression is an error
regardless of expected type: it can't be an expression, even of type Unit.
2015-12-01 10:36:40 +03:00
Dmitry Petrov
1a3a296827 KT-10139: any if without else used in expression is an error
regardless of expected type: it can't be an expression, even of type Unit.

 #KT-10139 Fixed
2015-12-01 10:36:40 +03:00
Denis Zharkov
b0dab4c67a Add minor changes after review
- Rename GENERIC_TYPE -> GENERIC_ARGUMENT
- Make 'callableDescriptor' nullable
2015-12-01 08:21:03 +03:00
Denis Zharkov
0fd2484bc9 Fix project source to overcome bootstrap problem 2015-12-01 08:21:02 +03:00
Denis Zharkov
c4bc2c9ba6 J2K Renderer: convert and make contravariant 2015-12-01 08:21:02 +03:00
Denis Zharkov
5a5889e3f3 J2K Renderer: .java -> .kt 2015-12-01 08:21:01 +03:00
Denis Zharkov
303c756302 Refine generic signature for fields
- For vals use the same semantics as for return types
- For vars use the same semantics as for value parameters
2015-12-01 08:21:01 +03:00
Denis Zharkov
64e0af48ed Minor. Change default for needPrimitiveBoxing 2015-12-01 08:21:01 +03:00
Denis Zharkov
ddb67d6c9c Support JvmSuppressWildcards and JvmWildcard annotations
#KT-9898 Fixed
2015-12-01 08:21:00 +03:00
Denis Zharkov
6292833a69 Refine generic signature for Map.get/remove
Before this change generic signature wasn't written because of wrong
assumption about it absence in all cases where we replace generic parameter
with Object
2015-12-01 08:21:00 +03:00
Denis Zharkov
20cbceb56d Add temporary hack for wildcards in Collections
By default we would render 'MutableCollection<String>.addAll(Collection<String>)' as
'(LCollection<String>;)' (without wildcard) because String is final and
effectively it's the same as '(LCollection<? extends String>;)'.

But that's wrong signature in a sense that java.util.Collection has different
signature: '(LCollection<? extends E>)'.

Actually the problem is much wider than collections,
it concerns any Java code that uses Kotlin classes with covariant
parameters without '? extends E' wildcards.

Temporary solution is just to hardcode/enumerate builtin methods
with special signature.
2015-12-01 08:20:59 +03:00
Denis Zharkov
0255be7deb Minor. Pass callableDescriptor into writeParameter 2015-12-01 08:20:59 +03:00
Denis Zharkov
406e31f54a Change default rules for declaration-site wildcards
Mostly this commit is about skipping wildcards that are redundant in some sense.
The motivation is that they looks `long` in Java code.

There are basically two important parts: return types and value parameters.

1. For return types default behaviour is skipping all declaration-site wildcards.
The intuition behind this rule is simple: return types are basically used in subtype position
(as an argument for another call), and here everything works well in case of 'out'-variance.
For example we have 'Out<Out<T>>>' as subtype both for 'Out<Out<T>>>' and 'Out<? extends Out<? extends T>>>',
so values of such type is more flexible in contrast to `Out<? extends Out<? extends T>>>` that could be used only
for the second case.

But we have choosen to treat `in`-variance in a different way: argument itself
should be rendered without wildcard while nested arguments are rendered by the rules
described further (see second part).

For example: 'In<Out<OpenClass>>' will have generic signature 'In<Out<? extends OpenClass>>'.
If we omit all wildcards here, then value of type 'In<Out<OpenClass>>'
will be impossible to use as argument for function expecting 'In<? super Out<? extends Derived>>'
where Derived <: OpenClass (you can check it manually :]).

And this exception should not be very inconvinient because in-variance is rather rare.

2. For value parameters we decided to skip wildcards if it doesn't make obtained signature weaker
in a sense of set of acceptable arguments.

More precisely:
    a. We write wildcard for 'Out<T>' iff T ``can have subtypes ignoring nullability''
    b. We write wildcard for 'In<T>' iff T is not equal to it's class upper bound (ignoring nullability again)

Definition of ``can have subtypes ignoring nullability'' is straightforward and you can see it in commit.

 #KT-9801 Fixed
 #KT-9890 Fixed
2015-12-01 08:20:59 +03:00
Denis Zharkov
1731cb8b40 Make jvmSignature optional in WriteSignatureTest 2015-12-01 08:20:58 +03:00
Denis Zharkov
917420f332 Convert TypeMappingMode from enum to plain class with constant instances 2015-12-01 08:20:58 +03:00
Denis Zharkov
faf1e17888 Introduce TypeMappingMode.toGenericArgumentMode 2015-12-01 08:20:57 +03:00
Denis Zharkov
ef2bc28463 Minor. Rename TypeMappingMode entries 2015-12-01 08:20:57 +03:00
Denis Zharkov
d22aaf9d52 Introduce writeDeclarationSiteProjections option into TypeMappingMode 2015-12-01 08:20:57 +03:00
Denis Zharkov
d8297cd6f1 Extract, rename and konvert TypeMappingMode 2015-12-01 08:20:56 +03:00
Denis Zharkov
6cf7cd5c07 Minor. Rename VALUE -> DEFAULT 2015-12-01 08:20:56 +03:00
Denis Zharkov
8a748703c8 Simplify type mapping for builtin types 2015-12-01 08:20:55 +03:00
Ilya Gorbunov
e5dd719eec Fix warning about incompatible types. 2015-12-01 01:35:19 +03:00
Ilya Gorbunov
0ffce06356 Hide toMap with keySelector
#KT-6657
2015-12-01 01:18:46 +03:00
Ilya Gorbunov
ea60ab74a7 Replace deprecated toMap usages with toMapBy 2015-12-01 01:18:44 +03:00
Ilya Gorbunov
f107559a3c Docs: proper pluralization of 'entry' 2015-12-01 01:18:21 +03:00
Ilya Gorbunov
6ca647aecd Minor: cleanup asSequence() documentation. 2015-12-01 01:18:19 +03:00
Ilya Gorbunov
f596d9ac23 Provide asIterable also for CharSequences, Maps and Iterables.
KT-10152 Fixed
2015-12-01 01:18:18 +03:00
Andrey Breslav
45db5db7e8 Forbid prefixes and suffixes for numeric literals 2015-11-30 19:36:33 +03:00
Andrey Breslav
8544a5ab5f Remove "This" keyword 2015-11-30 19:36:33 +03:00
Andrey Breslav
aca355acdc '...' reserved as a token
KT-9708 Ambiguous syntax for Double ranges: `.1...2` (triple dot)

 #KT-9708 Fixed
2015-11-30 19:36:33 +03:00
Alexander Udalov
877129340f Revert "Rename Extension annotation to ExtensionFunctionType"
This reverts commit 460dad135c.

The old compiler will not see the new runtime correctly. Postponing this until
1.0
2015-11-30 19:24:58 +03:00
Alexander Udalov
745809c666 Rename TestlibTest -> StdlibTest 2015-11-30 19:19:20 +03:00
Mikhail Glukhikh
fe04cc513b Original type is taken into account when intersecting possible types in resolve #KT-10232 Fixed 2015-11-30 19:09:44 +03:00
Alexander Udalov
db2521ee67 Rework TestlibTest, use JUnit console runner instead of manual suite
The problem with the manually created suite was that it was created in setUp()
and so a lot of the hard work (compilation, test case lookup) was happening in
setUp(). If any exception is thrown in setUp(), tearDown() is not called,
leaving the application (~9000+ subsequent tests) in the inconsistent state.

Support JUnit 4 tests via JUnit4TestAdapter. Previously only a small number of
test classes were actually run because this test was looking only for JUnit 3
testcases.

Delete FilesTest#relativePath because it was testing a deprecated function
and was failing if run from the project root
2015-11-30 18:58:00 +03:00
Natalia Ukhorskaya
74b6f70c80 JDIEval: do not disable collection when invoke method using reflection 2015-11-30 18:46:40 +03:00
Michael Bogdanov
df1641ff9b Fix for KT-10047: java.lang.VerifyError: Bad return type
#KT-10047 Fixed
2015-11-30 18:44:13 +03:00
Pavel V. Talanov
54addb4b1e Script run configuration: Set working directory to a directory containing script file by default 2015-11-30 18:21:06 +03:00
Pavel V. Talanov
5a55ee332e FileBasedDeclarationProviderFactory: stable order of files
Fixes DiagnosticsTestGenerated#testScriptAndClassConflict
2015-11-30 18:21:06 +03:00
Pavel V. Talanov
4a1c3f02fd Add basic tests for KotlinStandaloneScriptRunConfiguration 2015-11-30 18:21:05 +03:00
Pavel V. Talanov
7577a375ae Minor: use script name generating code to generate names for script run configurations 2015-11-30 18:21:04 +03:00
Pavel V. Talanov
d6c7029c77 Compiler, Scripts: strip stacktrace when reporting exception on script execution 2015-11-30 18:21:04 +03:00
Pavel V. Talanov
567f946cb0 K2JVMCompiler: Do not report perf in script mode 2015-11-30 18:21:03 +03:00
Pavel V. Talanov
34793e63c7 Allow to run kts files as scripts from ide
Introduce KotlinStandaloneScriptRunConfiguration: configuration, type, producer, settings editor
2015-11-30 18:21:03 +03:00
Pavel V. Talanov
337701670c Refactor script registering in frontend and jvm backend 2015-11-30 18:21:02 +03:00
Pavel V. Talanov
6520e9aed6 Refactor: AnalyzerScriptParameter -> ScriptParameter 2015-11-30 18:21:02 +03:00
Pavel V. Talanov
0d10f0fcf9 Minor: Remove direct usages of ScriptNameUtil 2015-11-30 18:21:01 +03:00
Pavel V. Talanov
7956ebe46c Move script related stuff into a separate package 2015-11-30 18:21:00 +03:00
Pavel V. Talanov
89081d487f J2K KotlinScriptDefinition and simplify 2015-11-30 18:21:00 +03:00
Alexey Sedunov
15b7eca665 Move: Detect extension declaration by PSI instead of descriptor as extension descriptor maybe wrapper for Java method
#KT-10203 Fixed
2015-11-30 16:27:23 +03:00
Michael Bogdanov
1bf521c645 Don't generate accessors for @JvmField properties in primary constructor 2015-11-30 16:24:05 +03:00
Mikhail Glukhikh
de37cb8f40 Generic types may not extend kotlin.Throwable #KT-9816 Fixed 2015-11-30 15:24:32 +03:00
Mikhail Glukhikh
c6be69a483 No more reified types for catch parameter #KT-9742 Fixed 2015-11-30 15:24:24 +03:00
Dmitry Petrov
f0e467e474 Rewrite mixed multiple- and single-condition 'when' properly.
#KT-10229 Fixed
2015-11-30 14:43:03 +03:00
Ilya Gorbunov
f7a780f32c Extension contains for ranges: rename parameter item to value. 2015-11-30 14:12:11 +03:00
Ilya Gorbunov
b4256f0c89 Replace increment with step in For Loop codegen for progressions 2015-11-30 14:12:10 +03:00
Ilya Gorbunov
661e288362 Introduce 'step' property in progressions instead of 'increment' 2015-11-30 14:12:05 +03:00
Natalia Ukhorskaya
b8d0685b71 Do not analyze imports in codeFragments
EA-76222 - assert: GetModuleInfoKt$getModuleInfo$.invoke Fixed
2015-11-30 12:38:15 +03:00
Natalia Ukhorskaya
d0355a793b Write lineNumbers for constructors 2015-11-30 12:25:51 +03:00
Natalia Ukhorskaya
3ec383dfca Debugger: find context element in file copy using UserData 2015-11-30 12:25:50 +03:00
Natalia Ukhorskaya
0d984ce8e2 Refactor AbstractLineNumberTest using assertEqualsToFile 2015-11-30 12:25:50 +03:00
Natalia Ukhorskaya
076e9c8dd1 Use debugProcess scope in KotlinPositionManager 2015-11-30 12:25:49 +03:00
Natalia Ukhorskaya
028016412e Convert DebuggerUtils to kotlin 2015-11-30 12:25:48 +03:00
Natalia Ukhorskaya
1136c5f54b Rename DebuggerUtils.kt 2015-11-30 12:25:48 +03:00
Natalia Ukhorskaya
e3e5fce3eb Minor: fix warnings in SmartStepIntoHandler 2015-11-30 12:25:47 +03:00
Natalia Ukhorskaya
9bcc9e4b1d Smart step into for constructors 2015-11-30 12:25:46 +03:00
Natalia Ukhorskaya
062b27995c Debugger: do not change package name for debug function 2015-11-30 12:25:45 +03:00
Natalia Ukhorskaya
002aaaa908 Debugger: fix imports if context element is inside inline lambda 2015-11-30 12:25:45 +03:00
Natalia Ukhorskaya
d2ef7b0ae0 Minor: get line start without whitespaces in KotlinExtraVariablesProvider
#KT-10183 Fxied
2015-11-30 12:25:44 +03:00
Natalia Ukhorskaya
0d486e1cfc Minor: fix warnings 2015-11-30 12:25:43 +03:00
Michael Nedzelsky
9a0520b30e fix EA-76198 (assert: KtElementImplStub.getContainingKtFile) 2015-11-30 10:49:03 +03:00
Alexander Udalov
460dad135c Rename Extension annotation to ExtensionFunctionType 2015-11-30 02:51:04 +03:00
Ilya Gorbunov
0a47d1cac2 Restore deprecated InputStream.iterator() with a replacement. 2015-11-29 04:38:28 +03:00
Ilya Gorbunov
941167e241 Revert "Drop deprecated toGenerator and toLinkedList." until RC 2015-11-29 04:37:45 +03:00
Ilya Gorbunov
f8fe3e6c1d Restore dropped hidden declarations for binary compatibility until RC. 2015-11-29 04:37:35 +03:00
Nikolay Krasko
9e0e3aaebb Don't insert {} after 'else' and 'try' in infinished statements 2015-11-28 20:22:28 +03:00
Ilya Gorbunov
5301f3eb46 Fix contains usages in compiler. 2015-11-28 07:21:39 +03:00
Ilya Gorbunov
54b415593a Replacement upcasts parameter to the most specific supertype in case of contains, indexOf, lastIndexOf, remove, get, containsKey, containsValue. 2015-11-28 07:21:38 +03:00
Ilya Gorbunov
de86e90103 Generate indexOf and lastIndexOf extensions for List. 2015-11-28 07:20:27 +03:00
Ilya Gorbunov
c7d08ea599 Remove *Raw method usages from tests 2015-11-28 07:20:25 +03:00
Ilya Gorbunov
a25f23a286 Apply @OnlyInputTypes on type parameter for contains, indexOf, lastIndexOf extensions for Iterables, Sequences and Arrays instead of @NoInfer on element parameter.
Provide covariant extensions annotated with @OnlyInputTypes:
 - Collection<T>: containsAll(Collection<T>),
 - MutableCollection<out T>: remove(T), removeAll, retainAll (Collection<T>),
 - List<T>: indexOf(T), lastIndexOf(T)
 - Map<out K, V>: get(K), containsKey(K), contains(K)
 - Map<K, V>: containsValue(V)
 - MutableMap<out K, V>: remove(K)
All *Raw extensions are deprecated.
2015-11-28 07:20:24 +03:00
Alexander Udalov
f6616e6e42 Minor, improve assertion message 2015-11-27 23:35:20 +03:00
Alexander Udalov
9e7e75de12 Rename ExternalSignatureResolver -> SignaturePropagator 2015-11-27 23:34:47 +03:00
Alexander Udalov
57e75a1b28 Drop deprecated code in ModuleMapping, add TODO 2015-11-27 23:34:46 +03:00
Alexander Udalov
6345d0e6d3 Remove obsolete FallbackPaths 2015-11-27 23:34:46 +03:00
Alexander Udalov
bcdea8ef10 Minor, rename dangerous getInternalName(), remove unused
FQ name can only be converted to an internal name correctly if it represents a
top-level class
2015-11-27 23:34:45 +03:00
Alexander Udalov
7b3b157707 Remove PropertyMetadata from project and bytecode, migrate code to KProperty 2015-11-27 23:34:34 +03:00
Alexander Udalov
fb61dc7e81 Fix potential deadlock on lazy vs storage manager 2015-11-27 21:41:26 +03:00
Alexander Udalov
caa6cdb3f7 Remove obsolete code in KotlinBuilder, rename PackageClassUtils 2015-11-27 21:41:26 +03:00
Alexander Udalov
8594cfca46 Remove kotlin.jvm.internal.KotlinPackage and corresponding code 2015-11-27 21:22:04 +03:00
Alexander Udalov
ad6888dac6 Drop KPackage and deprecated stuff from Reflection/ReflectionFactory 2015-11-27 21:22:04 +03:00
Alexander Udalov
8a5b63a669 Inline PLATFORM_TYPES = true, simplify signature propagation 2015-11-27 21:22:04 +03:00
Alexander Udalov
417a27f3b1 Minor, get rid of AlternativeMethodSignature in irrelevant place 2015-11-27 21:22:04 +03:00
Alexander Udalov
fa34ebac4a Delete KotlinSignature and corresponding code 2015-11-27 21:22:04 +03:00
Alexander Udalov
d472154ea7 Remove KotlinSignature from tests, spec, delete tests with errors 2015-11-27 21:22:04 +03:00
Alexander Udalov
9cdeac7839 Fix exception in tower resolution on inner class constructors 2015-11-27 21:20:53 +03:00
Ilya Chernikov
96a9634ace using mapNotNull insteand of map + filterNotNull 2015-11-27 19:04:05 +01:00
Ilya Chernikov
fd81063134 Renaming daemon main object, so it is better recognizable in jps/ps output 2015-11-27 19:04:05 +01:00
Ilya Chernikov
c76bec51a0 Moving daemon files, renaming namespaces, modules and jar 2015-11-27 19:04:04 +01:00
Ilya Chernikov
312e931582 Code cleanup - removing public modifier, obsolete constants, fixing typos, etc. 2015-11-27 19:04:03 +01:00
Ilya Chernikov
9869fc4305 fixes after review 2015-11-27 19:04:03 +01:00
Ilya Chernikov
231949803a fixing tests 2015-11-27 19:04:02 +01:00
Ilya Chernikov
336f6de2ee Passing a log file name in logger-compatible format on Windows in tests, fixes problems with daemon tests on Windows 2015-11-27 19:04:01 +01:00
Ilya Chernikov
d3797619af Some basic daemon lifetime tests 2015-11-27 19:04:01 +01:00
Ilya Chernikov
0c27bb7170 implementing equals and hashCode for CallResult classes, making get polymorphic via virtual method 2015-11-27 19:04:00 +01:00
Ilya Chernikov
6867023274 Cleanup after compilation in daemon 2015-11-27 19:04:00 +01:00
Ilya Chernikov
85b487cd84 Implementing graceful shutdown, fattest daemon elections and some minor refactorings in daemon and client behavior 2015-11-27 19:03:59 +01:00
Ilya Chernikov
2612ce56b4 Implementing new logic of choosing the daemon, startup and shutdown, some related refactorings and fixes 2015-11-27 19:03:58 +01:00
Ilya Chernikov
375679677c Implementation of the new daemon management without inter-daemon elections and with few other simplifications 2015-11-27 19:03:58 +01:00
Yan Zhulanow
1643441fdb Minor: fix quickfix tests (get/set functions are now created correctly, merge issue) 2015-11-27 20:30:19 +03:00
Mikhail Glukhikh
8788d8e2d5 Call chains: receiver data flow info is dropped for extensions with nullable receiver #KT-10056 Fixed 2015-11-27 20:23:25 +03:00
Mikhail Glukhikh
97cdaba8b0 Refactoring of getQualifiedExpressionTypeInfo 2015-11-27 17:39:56 +03:00
Mikhail Glukhikh
ea4f167091 Calls to non-@JvmStatic protected members of companion objects from subclasses are now errors (unsupported yet) 2015-11-27 15:58:38 +03:00
Yan Zhulanow
e39ca63bcc Android Extensions: Fix Android JPS plugin 2015-11-27 15:51:11 +03:00
Yan Zhulanow
2cbf9d7e9b Add empty Android Extensions plugin 2015-11-27 15:51:11 +03:00
Yan Zhulanow
3d6bdd14b2 Minor: fix AbstractAndroidSyntheticPropertyDescriptorTest test, sort descriptors 2015-11-27 15:51:11 +03:00
Yan Zhulanow
d21985493e Mark functions with 'operator' in JS stdlib 2015-11-27 15:51:11 +03:00
Yan Zhulanow
9d1af5a17e Fix tests: "infix modifier required" and "operator modifier required" errors 2015-11-27 15:51:11 +03:00
Yan Zhulanow
a3ff3ffc45 Fix tests: "Placing function type parameters after the function name" error 2015-11-27 15:51:11 +03:00
Yan Zhulanow
3001af56c9 Mark SAM adapter functions as infix or operator if the original function is marked as such 2015-11-27 15:51:11 +03:00
Yan Zhulanow
b7fcbff75c Some deprecation warnings are now errors 2015-11-27 15:51:11 +03:00
Yan Zhulanow
278f1cd6ef Fix "Placing function type parameters after the function name" errors in project 2015-11-27 15:51:11 +03:00
Yan Zhulanow
87799e9b6b Fix "operator modifier required" errors in project 2015-11-27 15:51:11 +03:00
Yan Zhulanow
46ac3571d5 Fix "infix modifier required" errors in project 2015-11-27 15:51:11 +03:00
Zalim Bashorov
d1c5bd4526 Minor: remove unused parameter from LookupTracker.record 2015-11-27 15:08:06 +03:00
Zalim Bashorov
7faa886d26 Minor: add more logging in KotlinBuilder 2015-11-27 15:07:57 +03:00
Michael Nedzelsky
5f13dc31f1 ConstantExpressionEvaluator: code cleanup, get rid of weak warnings 2015-11-27 14:29:47 +03:00
Michael Nedzelsky
9aae5e6457 fix KT-9553 Invalid const initializers must be compile-time errors
#KT-9553 Fixed
2015-11-27 14:29:44 +03:00
Nikolay Krasko
18f892892c Update to idea 143.1015.7 2015-11-26 22:16:43 +03:00
Alexey Sedunov
e37eea2b2d Create from Usage: Add infix modifier to functions generated from binary expressions
#KT-10184 Fixed
2015-11-26 21:22:20 +03:00
Alexey Sedunov
5b90c09ab1 Create from Usage: Add operator modifier to indexing get/set functions
#KT-10185 Fixed
2015-11-26 21:22:18 +03:00
Alexey Sedunov
7a40239e64 Introduce Variable: Support destructuring declarations
#KT-6262
2015-11-26 21:22:16 +03:00
Alexey Sedunov
09f8aafb77 Change Signature: Drop 'override' keyword when changing function/property, but not its overriden declarations
#KT-9470 Fixed
2015-11-26 21:22:15 +03:00
Michael Nedzelsky
2fa34ae170 KT-9883 prohibit using spread operator for nullable value
#KT-9883 Fixed
2015-11-26 19:42:34 +03:00
Stanislav Erokhin
63fa71606f Create new Tower Resolve 2015-11-26 16:21:49 +03:00
Stanislav Erokhin
c08545359e Minor. Changes after review 2015-11-26 16:21:47 +03:00
Stanislav Erokhin
ebc3ccbb2a Fixed scope kind for default values 2015-11-26 16:21:47 +03:00
Stanislav Erokhin
a502405779 Fixed scope creations for properties scopes. 2015-11-26 16:21:46 +03:00
Stanislav Erokhin
67abdd755f Created kind in LexicalScope 2015-11-26 15:40:00 +03:00
Stanislav Erokhin
f06f557dae Minor. introduce CallResolver.TaskContextForMigration 2015-11-26 15:38:17 +03:00
Michael Bogdanov
2d3d526ccd Fix for KT-10110: ClassReader$BadClassFile undeclared type variable: E
#KT-10110 Fixed
2015-11-26 13:29:30 +03:00
Dmitry Petrov
9ccb1fd506 KT-9601, KT-10103:
Chose maximally specific function in callable reference
 #KT-9601 Fixed
 #KT-10103 Fixed
2015-11-26 12:52:12 +03:00
Natalia Ukhorskaya
67dd97b918 Mark bridge methods in lambdas classes as synthetic
#KT-10101 Fixed
2015-11-26 11:39:19 +03:00
Natalia Ukhorskaya
cb80a3e83a Write lineNumber for function literal with void return value
#KT-9865 Fixed
2015-11-26 11:39:18 +03:00
Natalia Ukhorskaya
4a2e4312ea Write lineNumber when inline function result is written to property 2015-11-26 11:39:17 +03:00
Natalia Ukhorskaya
f40e3857fa KotlinOutputParser: do not amend next line to warnings
#KT-9678 Fixed #KT-10129 Fixed
2015-11-26 11:39:16 +03:00
Natalia Ukhorskaya
0d80b4f8b0 Fix compatibility with AS 2.0 (for master branch) 2015-11-26 11:39:16 +03:00
Natalia Ukhorskaya
48027f5fb5 Fix compatibility with AS 2.0
#KT-10153 Fixed
2015-11-26 11:39:15 +03:00
Ilya Gorbunov
ca4bdd23e0 Provide flatten for sequence of iterables.
#KT-9977
2015-11-26 00:45:15 +03:00
Ilya Gorbunov
4181142400 Deprecate sequenceOf(Progression). 2015-11-26 00:45:15 +03:00
Ilya Gorbunov
8440c196d1 GeneratorSequence: do not get first value, until it's requested by iterator, allow initialValue to be null and return EmptySequence in this case.
#KT-9153 Fixed
2015-11-26 00:45:15 +03:00
Nikolay Krasko
29a9ba64ca Move creating sink for extra diagnostics into generation state to take responsibility for correct diagnostics suppression 2015-11-26 00:24:38 +03:00
Nikolay Krasko
652eeca872 Allow suppress additional diagnostics for JVM target
Suppression doesn't work without resolved annotation in binding context.
2015-11-26 00:24:38 +03:00
Nikolay Krasko
5bb141381b Refactoring: replace condition with function 2015-11-26 00:24:38 +03:00
Nikolay Krasko
7622e90438 Filter diagnostics during creating cache 2015-11-26 00:24:38 +03:00
Nikolay Krasko
7baf58b5de Refactoring: mark all fields in PositionStrategies with @JvmFileld and fix warnings 2015-11-26 00:24:38 +03:00
Nikolay Krasko
d80c5ec7f7 Minor: clean warnings in ErrorsJvm 2015-11-26 00:24:38 +03:00
Nikolay Krasko
03fe5125cb Minor: remove warnings 2015-11-26 00:24:38 +03:00
Stanislav Erokhin
28226906da Minor. removed usages ExpressionReceiverImp 2015-11-25 20:53:40 +03:00
Stanislav Erokhin
f0cefd5583 Create hacks for magic annotations NoInfer, OnlyInputTypes and LowPriorityInOverloadResolution. 2015-11-25 20:53:39 +03:00
Ilya Gorbunov
1be4f795ed Fix testData after deprecated toLinkedList and joinToString were dropped. 2015-11-25 18:35:04 +03:00
Ilya Gorbunov
229504f42d Byte iterator only available for buffered input streams,
InputStream.buffered() returns BufferedInputStream.
2015-11-25 18:35:03 +03:00
Ilya Gorbunov
c848ebdc52 Deprecate complex delegation to map. 2015-11-25 18:35:03 +03:00
Ilya Gorbunov
77f69abca4 Drop deprecated toGenerator and toLinkedList. 2015-11-25 18:35:02 +03:00
Ilya Gorbunov
c485eda1c2 Make zip operation symmetrical for CharSequences (missed to generalize parameter before). 2015-11-25 18:35:01 +03:00
Ilya Gorbunov
a05d0a3c49 Drop hidden declarations provided for binary compatibility in beta2 2015-11-25 18:35:00 +03:00
Ilya Gorbunov
542ab6ae34 Deprecate String.toCharList to use toList instead. 2015-11-25 18:34:58 +03:00
Mikhail Glukhikh
a53ad098d6 Codegen test for smart cast to Nothing? 2015-11-25 18:26:25 +03:00
Mikhail Glukhikh
9a6d4c32c5 More accurate handling of "always null" for receivers 2015-11-25 18:26:15 +03:00
Mikhail Glukhikh
89e56093a2 Limit "always null" scope: only for !!, is and dot; senseless comparison rolled back; "smart constant" information for nulls #KT-10029 Fixed 2015-11-25 18:26:08 +03:00
Dmitry Petrov
db42941586 Allow annotation constructor calls
in default parameter value expressions of anonymous classes
(if it is not a compile-time constant, it will be reported separately).

 #KT-10136 Fixed
2015-11-25 18:06:08 +03:00
Ilya Gorbunov
73e3a252d3 JS: ArrayList.addAll must return Boolean
#KT-7809
2015-11-25 17:19:00 +03:00
Ilya Gorbunov
b253ace198 Test different return results of collection mutation operations. 2015-11-25 17:18:59 +03:00
Ilya Gorbunov
f17316f4b4 Provide removeAll and retainAll with predicate for MutableIterables and MutableList.
#KT-8760 Fixed
2015-11-25 17:18:58 +03:00
Ilya Gorbunov
5ab2f47101 Make MutableCollection extensions return Boolean indicating whether the operation resulted collection to be changed. 2015-11-25 17:18:58 +03:00
Sergey Mashkov
2f04f30063 KT-10114 Maven: plugin doesn't recognize sourceDirs configured in the goal configuration 2015-11-25 16:45:48 +03:00
Mikhail Glukhikh
46f4191185 Unnecessary safe call is now reported in CallExpressionResolver, removed code duplication for safe call receivers
See also KT-10175
2015-11-25 16:19:48 +03:00
Dmitry Petrov
da90c21284 Warn about comma-separated conditions in when without argument.
See KT-5143.
2015-11-25 15:39:23 +03:00
Mikhail Glukhikh
b9e9c47b28 Using of enum entries as types is now forbidden #KT-5401 Fixed 2015-11-25 13:33:16 +03:00
Alexey Sedunov
736813c76a Introduce Lambda Parameter: Support extraction of string template fragments 2015-11-24 20:40:26 +03:00
Alexey Sedunov
c82d431cff Psi Unifier: Match unifier parameters by declaration instead of descriptor (since descriptor identity may change in the new context) 2015-11-24 20:40:22 +03:00
Alexey Sedunov
1b162e0294 Introduce Parameter: Support extraction of string template fragments 2015-11-24 20:40:21 +03:00
Alexey Sedunov
6e8acc6453 Psi Unifier: Do not unify parameters with block expressions 2015-11-24 20:40:20 +03:00
Alexey Sedunov
741489f4a5 Extract Function/Introduce Property: Support extraction of string template fragments 2015-11-24 20:40:18 +03:00
Alexey Sedunov
f4b4b023a3 Introduce Variable: Support extraction of string template fragments
#KT-2089 Fixed
2015-11-24 20:40:15 +03:00
Alexey Sedunov
7dbcceee79 Minor: Replace PsiFile with KtFile in utility functions 2015-11-24 20:40:14 +03:00
Alexey Sedunov
c80826aab4 Minor: Allow passing explicit type to KotlinNameSuggester.suggestByExpressionAndType 2015-11-24 20:40:12 +03:00
Alexey Sedunov
94f58c4b3d Minor: Drop Match class. Move range to UnificationResult.Matched 2015-11-24 20:40:10 +03:00
Alexey Sedunov
2d57aafef3 Misc: Render text of lambdas and functional expressions in "Extract..." popups 2015-11-24 20:40:08 +03:00
Alexey Sedunov
5889971d62 Introduce Variable: Allow choosing extraction scope for expressions in the lambda body
#KT-7720 Fixed
2015-11-24 20:40:07 +03:00
Dmitry Jemerov
70049171cd use Kotlin call hierarchy provider only for Kotlin elements, to ensure that it does not interfere with standard Java features of IntelliJ IDEA 2015-11-24 16:53:42 +01:00
Michael Bogdanov
3da463be27 Fix for KT-10137: Internal error: couldn't inline method call on lambda taking extension function parameter
#KT-10137 Fixed
2015-11-24 16:32:06 +03:00
Michael Bogdanov
a19bdaeb23 Fix duplicate field error on inlining several lambdas 2015-11-24 16:32:06 +03:00
Michael Bogdanov
d3f7e9f74b Rename this$0 on decl site 2015-11-24 16:32:06 +03:00
Michael Bogdanov
d4369c1df9 Keep inline transformation invariant: all captured parameters stored in topmost lambda/object
Fix for KT-8668: java.lang.ClassFormatError: Duplicate field name&signature (based on property access)

  #KT-8668 Fixed
2015-11-24 16:32:05 +03:00
Zalim Bashorov
93eb09a654 Return platform independent path in IncrementalCacheImpl::getClassFilePath
Fix ExperimentalIncrementalJpsTestGenerated.PureKotlin.testFunctionBecameInline on Windows.
2015-11-24 16:05:46 +03:00
Alexey Sedunov
b6a5d30469 Inspections: Forbid equals/hashCode inspection on object with explicit supertypes
#KT-9778 Fixed
2015-11-24 14:03:48 +03:00
Alexey Sedunov
d652623f90 J2K: KotlinIntroduceVariableHandler 2015-11-24 14:03:46 +03:00
Alexey Sedunov
a591c27dbf J2K: KotlinIntroduceVariableHandler (rename .java -> .kt) 2015-11-24 14:03:43 +03:00
Alexey Sedunov
b75665a96a Misc: Do not use resolved call of outer expression if current call expression has no callee
#KT-10105 Fixed
2015-11-24 14:03:42 +03:00
Michael Nedzelsky
a01a18cb1a fix test data for K2JsCliTest 2015-11-24 13:30:16 +03:00
Valentin Kipyatkov
f98b354bc1 KT-10005 Java to Kotlin: do not convert type cast to cast to nullable if it should not be null
#KT-10005 Fixed
2015-11-24 12:17:51 +03:00
Valentin Kipyatkov
d78390e489 KT-10004 Java to Kotlin: array.length is converted to array.size() instead of array.size
#KT-10004 Fixed
2015-11-24 12:17:51 +03:00
Valentin Kipyatkov
4905275a30 Renames 2015-11-24 12:16:58 +03:00
Valentin Kipyatkov
fc34557a7a Refactored to be more type safe 2015-11-24 12:16:57 +03:00
Dmitry Petrov
931463af0d - Fix code generation for inlined String::plus
#KT-10131 Fixed.
- Make extra factory methods in IntrinsicMethod protected.
This ensures that any of them can be properly overridden.
2015-11-24 12:09:34 +03:00
Michael Nedzelsky
2b4868c3ce js: do not generate files for empty string tables 2015-11-23 22:32:47 +03:00
Michael Nedzelsky
8ac3b1441a remove idea-js module 2015-11-23 22:32:44 +03:00
Michael Nedzelsky
a7636126a1 fix tests for js 2015-11-23 22:32:40 +03:00
Michael Nedzelsky
ac8dd1262c generate kjsm-files for js-stdlib and during compilation via maven or gradle 2015-11-23 22:32:37 +03:00
Michael Nedzelsky
c80c33efb6 add kjsm option for kotlin js command line compiler 2015-11-23 22:32:32 +03:00
Nikolay Krasko
24e473f47b Minor: put type parameters before function name 2015-11-23 22:03:32 +03:00
Nikolay Krasko
d635f6f399 Run builtins resolve under non-cancelable progress indicator 2015-11-23 22:03:32 +03:00
Nikolay Krasko
a62e6f7737 Refactoring: extract ObservableStorageManager from LoggingStorageManager 2015-11-23 22:03:32 +03:00
Nikolay Krasko
58dbb1ad53 Rethrow stored process canceled exception as a new one with both stacks 2015-11-23 22:03:32 +03:00
Nikolay Krasko
4aa7314600 Update to Idea 143.869.1 2015-11-23 22:03:32 +03:00
Nikolay Krasko
c9e1671572 LazyThreadSafetyMode.NONE is not safe to use in multithreading environment (EA-76205) 2015-11-23 22:03:32 +03:00
Valentin Kipyatkov
606a34283d Use lookup elements from completion for variables in live templates 2015-11-23 20:31:34 +03:00
Valentin Kipyatkov
f44bbfe4cd Moved test data to idea-live-templates too 2015-11-23 20:31:33 +03:00
Valentin Kipyatkov
b8dadeb4cc Moved live templates support into separate module 2015-11-23 20:31:33 +03:00
Valentin Kipyatkov
c6df1b6dce KT-9747 Live template macro "kotlinSuggestVariableName()" is wrong
#KT-9747 Fixed
2015-11-23 20:31:33 +03:00
Valentin Kipyatkov
6bd723da11 Templates "ifn" and "inn" to use kotlinVariable() instead of suggestVariableName() 2015-11-23 20:31:33 +03:00
Valentin Kipyatkov
d4ba15fd90 "kotlinVariable()" macro to filter by expected type, dropped IterableVariableMacro 2015-11-23 20:31:33 +03:00
Valentin Kipyatkov
7dc6aff2e6 Moved ExpectedInfos and related classes into idea.core 2015-11-23 20:31:32 +03:00
Valentin Kipyatkov
0e740dc0a6 IterableVariableMacro to honor smart casts 2015-11-23 20:31:32 +03:00
Valentin Kipyatkov
51647853f3 Refactored BaseKotlinVariableMacro to not create IterableTypesDetector in all cases 2015-11-23 20:31:32 +03:00
Valentin Kipyatkov
566805fe93 Rewritten BaseKotlinVariableMacro 2015-11-23 20:31:32 +03:00
Valentin Kipyatkov
2fdd1ade26 Refactored utlity for checking isVisible 2015-11-23 20:31:31 +03:00
Valentin Kipyatkov
3d2f878885 Minor code simplifications + no i18n 2015-11-23 20:31:31 +03:00
Valentin Kipyatkov
bfddba7789 Converted to Kotlin 2015-11-23 20:31:31 +03:00
Mikhail Glukhikh
dc60c62781 Enum.values is now deprecated but Enum.values() is no more deprecated 2015-11-23 17:29:36 +03:00
Mikhail Glukhikh
6e733f708e DeclarationsChecker: converted to Kt + EffectiveVisibility related refactoring 2015-11-23 17:29:29 +03:00
Mikhail Glukhikh
fe2fb7e5a5 DeclarationsChecker: rename to Kt 2015-11-23 17:29:26 +03:00
Mikhail Glukhikh
1c609663a4 Private setters are now deprecated for open properties 2015-11-23 17:29:23 +03:00
Mikhail Glukhikh
74976911a2 Diagnostic for "private setter in abstract property" renamed 2015-11-23 17:29:20 +03:00
Mikhail Glukhikh
284c1b2ec5 Local sealed classes are deprecated 2015-11-23 17:29:16 +03:00
Alexander Udalov
f98703dcdb Minor, fix URL in JvmName kdoc 2015-11-23 14:56:50 +03:00
Dmitry Petrov
048e96ef6a Fix safe call code generation for ranges. 2015-11-23 10:34:08 +03:00
Ilya Gorbunov
5aa415c609 MutableMap.iterator() returns MutableIterator. 2015-11-21 07:09:07 +03:00
Ilya Gorbunov
21f509511c Fix CharSequence parameter names in testData 2015-11-21 07:09:05 +03:00
Ilya Gorbunov
f2ce849f18 Fix parameter names in testData 2015-11-21 07:09:03 +03:00
Ilya Gorbunov
ab3e6258ac Update testdata for LoadBuiltinsTest 2015-11-21 07:09:02 +03:00
Ilya Gorbunov
0dbbb6c19c Rename operand parameter of plus and minus for collections 2015-11-21 00:54:37 +03:00
Ilya Gorbunov
7c726bcaf9 Rename parameters: ClosedRange.contains 2015-11-21 00:54:36 +03:00
Ilya Gorbunov
9c59045f48 Rename parameters: CharSequence 2015-11-21 00:54:35 +03:00
Ilya Gorbunov
2ed277a863 Add upperbound constraint Comparable<T> to toSortedSet() and sortedMapOf()
Provide an overload of toSortedSet() with Comparator<in T> parameter
#KT-10115 Fixed
2015-11-21 00:54:33 +03:00
Ilya Gorbunov
f8f257fa44 Minor: fix infix extension after parameter renamed 2015-11-21 00:54:32 +03:00
Ilya Gorbunov
b61bef324d Make Char.category and directionality properties instead of functions.
Provide contains(Char) operator for CharCategory.
2015-11-21 00:54:30 +03:00
Ilya Gorbunov
775755dfac Introduce String.toCharArray() instead of String.getChars()
Make special method conversion for java.lang.String.getChars() in J2K
2015-11-21 00:54:29 +03:00
Ilya Gorbunov
bf3a77b736 Deprecate Regex.matcher() with ERROR and provide the replacement. 2015-11-21 00:54:28 +03:00
Ilya Gorbunov
eb2a976f32 Minor: use EnumSet to hold options of regex. 2015-11-21 00:54:26 +03:00
Ilya Gorbunov
7035c300d0 Rename parameters of a thread function. 2015-11-21 00:54:25 +03:00
Ilya Gorbunov
47b3859641 Deprecate monitorEnter and monitorExit not to be used from user code. 2015-11-21 00:54:23 +03:00
Ilya Gorbunov
9d24f1d1cf Delegates.mapVal and mapVar preserve type of the receiver to when calling default value lambda. 2015-11-21 00:54:22 +03:00
Ilya Gorbunov
0f70def3db StdLib: Rename method parameters (generated code) 2015-11-21 00:54:20 +03:00
Ilya Gorbunov
7e7a55bbe4 StdLib: Rename method parameters (Strings) 2015-11-21 00:54:19 +03:00
Ilya Gorbunov
bbe6a3c7ca StdLib: Rename method parameters (Maps) 2015-11-21 00:54:18 +03:00
Ilya Gorbunov
a3cd86d2cd StdLib: Rename method parameters (Collections) 2015-11-21 00:54:16 +03:00
Ilya Gorbunov
c3190bbae3 Migrate type parameter list syntax. 2015-11-21 00:54:15 +03:00
Ilya Gorbunov
16c5289e6c Stdlib generators DSL: allow to use documentation family extensions inside doc { } without importing them first. 2015-11-21 00:54:13 +03:00
Ilya Gorbunov
a426c7879f Apply infix modifier on functions from stdlib where appropriate. 2015-11-21 00:54:12 +03:00
Ilya Gorbunov
794819cea2 StdLib cleanup: make calls non-infix 2015-11-21 00:54:10 +03:00
Ilya Gorbunov
88e48380af StdLib cleanup, deprecated symbol usage: Throwable.getMessage 2015-11-21 00:54:09 +03:00
Ilya Gorbunov
dadcdb5771 StdLib cleanup, deprecated symbol usage: List and Map members 2015-11-21 00:54:08 +03:00
Ilya Gorbunov
838109c302 StdLib cleanup, deprecated symbol usage: replace end with endInclusive 2015-11-21 00:54:06 +03:00
Ilya Gorbunov
07654eb82b StdLib cleanup, deprecated symbol usage: size() and length() 2015-11-21 00:54:05 +03:00
Ilya Gorbunov
21e2e68ed4 Replace reversed() with apply { reverse() } or asReversed() 2015-11-21 00:54:03 +03:00
Ilya Gorbunov
32151c077e Replace map { ... }.filterNotNull() with mapNotNull { ... } 2015-11-21 00:54:01 +03:00
Ilya Gorbunov
5b02a59cb7 Fix JvmStatic applicability diagnostics test after COMPANION_OBJECT became distinct KotlinTarget 2015-11-21 00:43:35 +03:00
Dmitry Jemerov
f20f15ec46 resolve KDoc references to members of companion object 2015-11-20 18:22:08 +01:00
Dmitry Jemerov
6adfb96154 AbstractJetReference -> AbstractKtReference 2015-11-20 18:22:07 +01:00
Dmitry Jemerov
bfca85db52 don't highlight multi-resolved references in KDoc as unresolved
#KT-9413 Fixed
2015-11-20 18:22:07 +01:00
Dmitry Jemerov
742830f815 resolve KDoc references in static scope of classes as well
#KT-9946 Fixed
2015-11-20 18:22:06 +01:00
Dmitry Jemerov
d709aa7db7 don't check for Kotlin plugin updates if IDEA update checks are turned off in the settings 2015-11-20 18:22:06 +01:00
Dmitry Jemerov
a80930bf15 code cleanup can replace infix calls to library functions with ordinary calls
#KT-9976 Fixed
2015-11-20 18:22:05 +01:00
Yan Zhulanow
efa2e98541 Do not launch Android Extensions JPS plugin if the Android IDEA plugin is disabled, or the module is not an Android JPS module 2015-11-20 18:33:18 +03:00
Mikhail Glukhikh
f81a5c06ea Protected in allowed in companion objects but forbidden in other objects, relevant test fixes 2015-11-20 16:32:59 +03:00
Valentin Kipyatkov
fdc7c75f5b Fixed "Import member" intention shown in the wrong place 2015-11-20 16:06:34 +03:00
Valentin Kipyatkov
bf99f91d83 Fixed EA-75877 2015-11-20 16:06:34 +03:00
Dmitry Jemerov
30084dff9d ensure that the short name of the Kotlin unused import inspection does not clash with Java (KT-10046) 2015-11-20 13:54:40 +01:00
Mikhail Glukhikh
c84b22396b Diagnostic 'final function with no body' deleted because it's redundant 2015-11-20 15:43:25 +03:00
Mikhail Glukhikh
b5610eebae Diagnostic 'final property in interface' deleted because it's redundant 2015-11-20 15:43:22 +03:00
Mikhail Glukhikh
cd1b58f2eb Final in interfaces: deprecation ---> error + relevant test fixes 2015-11-20 15:43:19 +03:00
Pavel V. Talanov
56af3a0af4 Increase stub version after changes to parser (script refactoring)
better late than never :(
2015-11-20 15:38:40 +03:00
Valentin Kipyatkov
603bcaa039 KT-10006 Parameter Info does not work for smart cast receiver
#KT-10006 Fixed
2015-11-20 15:36:31 +03:00
Mikhail Glukhikh
4e44466cf9 Exposed visibility deprecation warnings made errors + relevant test fixes 2015-11-20 15:21:01 +03:00
Mikhail Glukhikh
e8e5d700d2 Effective visibility source code fix: frond-end 2015-11-20 15:20:38 +03:00
Mikhail Glukhikh
e43a45755e Source code fix: no protected in object 2015-11-20 09:56:23 +03:00
Mikhail Glukhikh
3d75ebb859 Effective visibility source code fix: jps plugin 2015-11-20 09:56:19 +03:00
Pavel V. Talanov
dbd49c37c1 Psi: Introduce KtScriptInitializer, a separate entity for script initializers which are quite a bit different from class initializers 2015-11-19 22:57:07 +03:00
Pavel V. Talanov
321364102a KtAnonymousInitializer: make it an interface with KtClassInitializer inheritor 2015-11-19 22:57:06 +03:00
Pavel V. Talanov
bc2a65b2ea J2K KtAnonymousInitializer in one go
Rip history
2015-11-19 22:57:05 +03:00
Pavel V. Talanov
6bb89021dd Rename: KtClassInitializer -> KtAnonymousInitializer 2015-11-19 22:57:05 +03:00
Pavel V. Talanov
917b8bfe66 Minor, repl: clean up code 2015-11-19 22:57:04 +03:00
Pavel V. Talanov
bdc64f322c Add script codegen tests with package statements
Tests codegen annotating visitor
2015-11-19 22:57:03 +03:00
Pavel V. Talanov
ae5c95038b Place repl specific stuff of GenerationState into a separate entity
Add even more hacks to tell if the line has useful result to display
2015-11-19 22:57:03 +03:00
Pavel V. Talanov
405cfa439d Repl test: behave closer to real repl 2015-11-19 22:57:02 +03:00
Pavel V. Talanov
ad58617753 Script refactoring, codegen tests: change test data according to semantics change
Add some new tests for uncovered cases
2015-11-19 22:57:01 +03:00
Pavel V. Talanov
6563830584 Script refactoring, backend: scripts are classes now, remove/refactor 'special code' dealing with scripts 2015-11-19 22:57:01 +03:00
Pavel V. Talanov
d037068bba Turn off duplicateJvmSignature reporting for scripts until light classes are implemented 2015-11-19 22:56:58 +03:00
Pavel V. Talanov
2b955bc6ec Script refactoring, frontend tests: changes according to semantic changes in scripts
Add checker tests for scripts
2015-11-19 22:56:57 +03:00
Pavel V. Talanov
efa4bf1d74 Script refactoring, frontend: Treat scripts as classes (as opposed to function bodies)
ScriptDescriptor implements ClassDescriptor
Scripts are accessible in IDE via stub index
Replace special treatment of scripts with generic mechanism in several cases
Scripts to longer generate 'rv' property for storing result value (changes in repl required)
2015-11-19 22:56:57 +03:00
Pavel V. Talanov
aebcebe8ca Add simple checker tests for scripts 2015-11-19 22:56:55 +03:00
Pavel V. Talanov
daa1a08213 Script refactoring, parser: wrap statements in script as if they are init blocks of a class 2015-11-19 22:56:54 +03:00
Pavel V. Talanov
e45585be21 Make KtScript stubbed and add KotlinScriptFqnIndex 2015-11-19 22:56:53 +03:00
Michael Nedzelsky
aa8f3df9a8 fix KT-10064 Regression: Error with multiple main functions within a single package
#KT-10064 Fixed
2015-11-19 19:59:27 +03:00
Yan Zhulanow
49f0953898 Remove obsolete JPS extension declaration in Android plugin (KT-10096) 2015-11-19 19:55:28 +03:00
Dmitry Petrov
42b587b0d5 Prohibit callable references to annotation class constructors.
See KT-4391.
2015-11-19 18:31:20 +03:00
Nikolay Krasko
0261a3fbbd Substitute version in bare plugin on buildserver 2015-11-19 16:08:04 +03:00
Nikolay Krasko
ee3100dc79 Relay plugins with version replacing 2015-11-19 16:08:04 +03:00
Nikolay Krasko
642ac2ec5e Minor: rename JetParserDefinition to KotlinParserDefinition in comments 2015-11-19 16:08:03 +03:00
Michael Nedzelsky
ea4470a16a fix KT-10068 JsLibraryStdDetectionUtil does not use caching through JarUserDataManager
#KT-10068 Fixed
2015-11-19 15:34:31 +03:00
Alexander Udalov
8fd7190992 Support ConstraintSystem.Builder.add, untested and unused at the moment 2015-11-19 14:40:01 +03:00
Natalia Ukhorskaya
6149f9f2bb Minor: extract method 2015-11-19 14:01:25 +03:00
Natalia Ukhorskaya
f872b378d0 Create KotlinStackFrame only for kotlin classes with inline functions
#KT-10092 Fixed
2015-11-19 14:01:23 +03:00
Natalia Ukhorskaya
35ccfef040 Add test for navigation from stacktrace at inline function with object 2015-11-19 12:07:03 +03:00
Natalia Ukhorskaya
6867165aba Fix navigation from stack trace to inline function calls in inner classes 2015-11-19 12:07:02 +03:00
Natalia Ukhorskaya
3498038db1 Support navigation to library inline functions from stack trace 2015-11-19 12:07:01 +03:00
Natalia Ukhorskaya
214ae54c69 Rewrite old exception filter test with library sources 2015-11-19 12:07:00 +03:00
Natalia Ukhorskaya
6c0a68cf66 Rewrite some old exception filter tests 2015-11-19 12:06:59 +03:00
Natalia Ukhorskaya
9f0b52f030 Navigate to inline function from stackTrace
#KT-8066 Fixed
2015-11-19 12:06:58 +03:00
Natalia Ukhorskaya
93ccc08e3d Convert KotlinExceptionFilter to kotlin 2015-11-19 12:06:58 +03:00
Natalia Ukhorskaya
4506a73112 Rename .java to .kt 2015-11-19 12:06:57 +03:00
Natalia Ukhorskaya
c0f67e497b Run Clean up on eval4j module 2015-11-19 12:06:56 +03:00
Natalia Ukhorskaya
fddcd9b50f Workaround for bug in jdi: ClassCastException in invoke method with Object[] param using Interface[] argument 2015-11-19 12:06:55 +03:00
Natalia Ukhorskaya
2b646369f3 Minor: fix warning 2015-11-19 12:06:54 +03:00
Natalia Ukhorskaya
6e638bd30a Debugger: show line content instead of method content for breakpoint at line in drop-donw list 2015-11-19 12:06:54 +03:00
Natalia Ukhorskaya
35d7d7b789 Minor: rename class 2015-11-19 12:06:53 +03:00
Natalia Ukhorskaya
7e5e749735 Debugger: remove while loop
#KT-10043 Fixed
2015-11-19 12:06:52 +03:00
Dmitry Petrov
9a736bf874 Use platform-dependent filter for callable package members
before checking for overloads:
filter deserialized callable package members by implementation class files
for callable package members from source.

 #KT-10051 Fixed
2015-11-19 09:51:21 +03:00
Alexander Udalov
6367e5e133 Fix deadlock on static initializers of KProperty implementations
#KT-10041 Fixed
2015-11-19 02:57:27 +03:00
Yan Zhulanow
39e6c6e500 Android Extensions: fix cli tests 2015-11-19 01:35:58 +03:00
Yan Zhulanow
148ec829a3 Minor: simplify SimpleNameReferenceExtension a bit 2015-11-19 01:35:58 +03:00
Yan Zhulanow
c9c740c66b Android Extensions: IDEA versions replication is not needed anymore 2015-11-19 01:35:58 +03:00
Yan Zhulanow
ba8e3785cf Android Extensions: Update Android JPS plugin 2015-11-19 01:35:58 +03:00
Yan Zhulanow
6caaa305bc Android extensions: Do not cache ViewStub widgets, do not cast it automatically 2015-11-19 01:35:58 +03:00
Yan Zhulanow
3f97b384ef Autoimport items from kotlinx.android.synthetic on completion 2015-11-19 01:35:58 +03:00
Yan Zhulanow
0dada9d13a Android extensions: Fix onDestroy in Fragments 2015-11-19 01:35:58 +03:00
Yan Zhulanow
10b7b069b4 Pack Android extensions inside the Kotlin IDEA plugin 2015-11-19 01:35:58 +03:00
Yan Zhulanow
422e11ea9a Fix Android Extensions tests (descriptors) 2015-11-19 01:35:58 +03:00
Yan Zhulanow
c7f1fd74a1 Create descriptors directly in Android Extensions (IDEA plugin) 2015-11-19 01:35:58 +03:00
Yan Zhulanow
d88c2249b8 Create descriptors directly in Android Extensions (compiler plugin) 2015-11-19 01:35:58 +03:00
Yan Zhulanow
3d8df88ab2 Fix some misc tests (Android variants) 2015-11-19 01:35:58 +03:00
Yan Zhulanow
9112dd632a Support Android variants in IDE 2015-11-19 01:35:58 +03:00
Yan Zhulanow
161d8b105f Support variants in Android Extensions (compiler plugin) 2015-11-19 01:35:58 +03:00
Yan Zhulanow
a6e9ee9323 Cleanup Android Extensions code 2015-11-19 01:35:58 +03:00
Michael Nedzelsky
dc7171e953 improve check for access to internal from tests for projects compiled via gradle 2015-11-18 22:57:59 +03:00
Dmitry Jemerov
5d92d3128d support for configuring Kotlin when creating new Gradle project
#KT-7978 Fixed
2015-11-18 20:19:43 +01:00
Michael Nedzelsky
e92ac6cba3 fix access to internal from tests for android projects which compiled via gradle 2015-11-18 20:19:31 +03:00
Dmitry Jemerov
084727c991 action to invoke a manual update check for the Kotlin plugin 2015-11-18 16:44:14 +01:00
Mikhail Glukhikh
7decca9df4 Get rid of unnecessary insideSafeCallChain in various contexts 2015-11-18 18:04:30 +03:00
Mikhail Glukhikh
3a4f6d8226 Smart cast impossible on when subject is no more recorded #KT-10061 Fixed 2015-11-18 18:02:59 +03:00
Alexander Udalov
58dc88dd2c Remove ConstraintSystem.Builder.addSupertypeConstraint
Use addSubtypeConstraint everywhere to reduce confusion
2015-11-18 16:40:51 +03:00
Alexander Udalov
3337b5298b Minor refactoring in ConstraintSystemImpl
Inline getUsedInBounds, get rid of another usage of freshTypeParameter
2015-11-18 16:40:49 +03:00
Alexander Udalov
3e27fdb964 Inline and move out utilities from ConstraintSystem 2015-11-18 16:40:49 +03:00
Alexander Udalov
d4664af4e5 Get rid of originalToVariableSubstitutor and descriptorToVariable
Move the composite substitutor to GenericCandidateResolver where it was used,
other places don't need it since they know the exact call (or NO_CALL), the
substitutor for which should be used
2015-11-18 16:40:48 +03:00
Alexander Udalov
cb05a8d58d Don't use originalToVariableSubstitutor in supertype constraints 2015-11-18 16:40:48 +03:00
Alexander Udalov
178ca3daae Add call to type variable and mapping descriptor -> variable
Since type parameter descriptor represents a single declaration of a type
parameter, multiple variables in one system may correspond to one type
parameter (e.g. in case of nested calls). Hence it's not possible to map type
parameters uniquely onto type variables and additional information is required
2015-11-18 16:40:47 +03:00
Alexander Udalov
fc73e8c620 Move original descriptor to TypeVariable, minimize usages of freshTypeParameter 2015-11-18 16:40:46 +03:00
Alexander Udalov
c1bd430b27 Introduce TypeVariable to abstract the system from descriptors
Store cached type and isExternal in type variable instead of sets in the
constraint system
2015-11-18 16:40:46 +03:00
Alexander Udalov
27ce61a3be Always alpha-convert non-external type parameters before registering in system 2015-11-18 16:40:45 +03:00
Alexander Udalov
4d5d24a503 Minor, move out check against no expected type 2015-11-18 16:40:45 +03:00
Alexander Udalov
e50eb50299 Make getNestedTypeVariables() an utility 2015-11-18 16:40:44 +03:00
Alexander Udalov
dd4a7ac6a9 Make ConstraintSystem work with variables, provide API to map to descriptors 2015-11-18 16:40:43 +03:00
Alexander Udalov
13abc265ad First steps to make distinction between variables and descriptors in ConstraintSystem
A type variable is an entity, the value of which should be solved by the
system; a descriptor is an actual TypeParameterDescriptor declaration
2015-11-18 16:40:43 +03:00
Alexander Udalov
eeb925f127 Minor, sort out visibilities & move utilities in constraint system 2015-11-18 16:40:42 +03:00
Alexander Udalov
89dfd52363 Remove ConstraintSystem.partialSubstitutor, move logic to FuzzyType 2015-11-18 16:40:42 +03:00
Alexander Udalov
d72a4c8037 Cleanup constraint system, convert functions to properties, delete unused 2015-11-18 16:40:41 +03:00
Alexander Udalov
3484c049d1 Rename ConstraintSystemSnapshot -> ConstraintSystemImpl 2015-11-18 16:40:40 +03:00
Alexander Udalov
265c135e89 Rename ConstraintSystemImpl -> ConstraintSystemBuilderImpl 2015-11-18 16:40:40 +03:00
Alexander Udalov
bb918a2742 Move mutating methods of ConstraintSystem to Builder
Extract immutable ConstraintSystemSnapshot from ConstraintSystemImpl
2015-11-18 16:40:39 +03:00
Alexander Udalov
d320922e08 Add more methods to interface ConstraintSystem
To minimize usages of ConstraintSystemImpl
2015-11-18 16:40:38 +03:00
Alexander Udalov
9149668286 Add ConstraintSystem#copy to minimize usages of ConstraintSystemImpl 2015-11-18 16:40:38 +03:00
Alexander Udalov
393852bf70 Simplify signature of ConstraintSystem#registerTypeVariables
Drop unused variance from TypeBounds and ConstraintSystem, provide default
values, inline methods used only once
2015-11-18 16:40:37 +03:00
Alexander Udalov
8cc484bc25 Cleanup GenericCandidateResolver 2015-11-18 16:40:37 +03:00
Dmitry Petrov
99b411c8ca companionObjectType --> classValueType
(NB: it IS NOT a companion object in case of OBJECT or ENUM_ENTRY)
Unify related names.
2015-11-18 16:27:26 +03:00
Dmitry Petrov
7b432c878a Diagnostics improvements for corner cases
(class/package qualifier in non-qualifier position).
2015-11-18 16:27:21 +03:00
Dmitry Petrov
ba8372cc11 Fixes for IDE tests after qualifier modifications:
- CallType should look into QUALIFIER,
 so that completion works for (companion) object qualifiers.
- Record type and reference target for object qualifiers (not only for companions).
- "Create (function/...)" should understand ClassQualifier as possible receiver.
- Cleanup after rebase on master.
2015-11-18 14:35:54 +03:00
Dmitry Petrov
9856af48ca Drop createQualifier: testData update 2015-11-18 14:35:53 +03:00
Dmitry Petrov
28d15e776a Drop createQualifier.
NB: some regression in diagnostics for special cases,
such as class or package used in expression position or in safe access;
see next commit.
2015-11-18 14:35:53 +03:00
Dmitry Petrov
b532fa2bbf Properly resolve values in 1st qualifier part (see implicitReceiverProperty test).
Look into QUALIFIER for left-most "unrolled" qualified expression
    in CallExpressionResolver#getQualifiedExpressionTypeInfo.
Drop some unused functions.
2015-11-18 14:35:53 +03:00
Dmitry Petrov
49570ba1ea Drop QualifierReceiver::resultingDescriptor. Use REFERENCE_TARGET. 2015-11-18 14:35:53 +03:00
Dmitry Petrov
eef8c7ae09 Move auxiliary methods for QualifierReceiver resolution to a separate file
(to be refactored later).
Get rid of duplicate type usage validation.
2015-11-18 14:35:53 +03:00
Dmitry Petrov
3556f9751e Reuse package/class qualifier prefix resolution for qualified expression resolution. 2015-11-18 14:35:52 +03:00
Dmitry Petrov
5ff2ffbccc Move resolve* methods from Qualifier.kt to QualifiedExpressionResolver.
Further differentiate various qualifiers.
2015-11-18 14:35:52 +03:00
Dmitry Petrov
16dcc0b288 Introduce Receiver as a common superclass of QualifierReceiver and ReceiverValue.
QualifierRecevier is no longer a subclass of ReceiverValue.
2015-11-18 14:35:52 +03:00
Nikolay Krasko
2ff0b13808 Run psi check on light classes from compiled Kotlin 2015-11-18 13:34:25 +03:00
Dmitry Jemerov
9e0ec80c6a Merge branch 'KT-1396' of https://github.com/mcgee/kotlin into mcgee-KT-1396 2015-11-17 18:49:44 +01:00
Dmitry Jemerov
0e1dff1c29 optimize PackageIndexUtil.packageExists() by using in-memory hash table instead of stub index lookup 2015-11-17 18:47:01 +01:00
Dmitry Jemerov
bf35099e0c use "destructuring declarations" term instead of "multi-declarations" 2015-11-17 18:43:26 +01:00
Anton Sukhonosenko
bec6621654 #KT-1396 Fixed 2015-11-17 19:33:18 +03:00
Michael Nedzelsky
ba47bfa752 Fix some weird cases when 'from' descriptor sourceElement is not a KotlinSourceElement 2015-11-17 18:23:12 +03:00
Mikhail Glukhikh
fe13f39de9 Use of uninitialized variables in lambdas / object literals / local functions is forbidden now #KT-4475 Fixed
Local declarations CFA: variable initialization information before them is now taken into account
2015-11-17 18:21:09 +03:00
Zalim Bashorov
89791dc85c Batch recording lookups in daemon 2015-11-17 17:25:38 +03:00
Zalim Bashorov
6305bbda5d Fix tracking lookups when compile using daemon 2015-11-17 17:25:37 +03:00
Dmitry Jemerov
49db4e93c0 Merge branch 'KT-5115' of https://github.com/mcgee/kotlin into mcgee-KT-5115 2015-11-17 15:14:00 +01:00
Denis Zharkov
a2627431f8 Minor. Cleanup and refine naming 2015-11-17 16:27:02 +03:00
Denis Zharkov
fa99ea1e98 Generate type-safe barrier in method body
In cases when signature of special bridge is the same as current method,
but type is not 'Any?'.

Also there is tiny optimization:
only null check needed if value parameter type is mapped to Object,
but it's not nullable.

 #KT-9973 Fixed
2015-11-17 16:27:02 +03:00
Denis Zharkov
1f704e0c4d Minor. Split BytecodeText tests about special builtin bridges 2015-11-17 16:27:02 +03:00
Denis Zharkov
3b2719735e Setup default values for type-safe bridges
#KT-9973 In Progress
2015-11-17 16:27:01 +03:00
Denis Zharkov
34518c0ecc Extract common logic into generateIsCheck 2015-11-17 16:26:29 +03:00
Denis Zharkov
f5a086140e Refine special bridge generating rule
Generate special bridge even in case current class has Kotlin superclass implementing
this builtin method, but that super class was generated without special bridge
(e.g. because it would have the same signature)

 #KT-9901 Fixed
2015-11-17 15:41:49 +03:00
Denis Zharkov
abf7ae547e Minor. Move tests 2015-11-17 15:41:48 +03:00
Dmitry Jemerov
83bf5daf7f do not package kotlin-runtime and kotlin-reflect into Kotlin Android extensions zip 2015-11-17 12:24:15 +01:00
Mikhail Glukhikh
7e5558c8a2 More receiver refactoring 2015-11-17 13:02:25 +03:00
Mikhail Glukhikh
657052e1d2 Rename: ClassReceiver ---> ImplicitClassReceiver, CastClassReceiver ---> CastImplicitClassReceiver 2015-11-17 13:02:22 +03:00
Mikhail Glukhikh
04569dd4af Rename: ExpressionOrImplicitClassReceiver ---> ThisClassReceiver 2015-11-17 13:02:19 +03:00
Mikhail Glukhikh
59e54d1db1 Rename: ThisReceiver ---> ImplicitReceiver 2015-11-17 13:02:16 +03:00
Mikhail Glukhikh
7ba297db81 ThisReceiver converted to Kotlin 2015-11-17 13:02:12 +03:00
Mikhail Glukhikh
ffb67eb79e Code cleanup 2015-11-17 13:02:09 +03:00
Mikhail Glukhikh
f1034dbf19 Receiver refactoring in DataFlowValueFactory 2015-11-17 13:02:06 +03:00
Dmitry Jemerov
e56b898a53 Merge pull request #785 from belovrv/patch-1
Add Slack badge
2015-11-17 10:50:54 +01:00
belovrv
3c138aa01c Add Slack badge 2015-11-17 12:49:22 +03:00
Mikhail Glukhikh
96c303be60 Smart cast of value / implicit receiver: two different colors 2015-11-17 10:26:46 +03:00
Mikhail Glukhikh
811ba8110f Implicit receiver smart casts implementation and highlighting 2015-11-17 10:26:42 +03:00
Mikhail Glukhikh
03287d5d66 Diagnostics corrected for smart cast impossible 2015-11-17 10:26:26 +03:00
Stanislav Erokhin
b4fe62e53e Minor. rename getObjectType to getCompanionObjectType 2015-11-17 01:25:18 +03:00
Stanislav Erokhin
c7f7ba72b8 Moved logic for PRIVATE_TO_THIS visibility from ExpressionTypingUtils.normalizeReceiverValueForVisibility to ExpressionReceiver.create 2015-11-17 01:25:18 +03:00
Stanislav Erokhin
6b7bf63814 Minor. Split ExpressionReceiver to interface & implementation 2015-11-17 01:25:17 +03:00
Stanislav Erokhin
5a7e879c0c Convert ExpressionReceiver to kotlin. 2015-11-17 01:25:17 +03:00
Stanislav Erokhin
512bcbe7b9 Minor. Removed usage of ExpressionReceiver constructor from Qualifier.kt 2015-11-17 01:25:16 +03:00
Stanislav Erokhin
1c9136a8cd Minor. introduce method ExpressionReceiver.create and replace almost all usages of constructor ExpressionReceiver. 2015-11-17 01:25:15 +03:00
Stanislav Erokhin
e606c0cdf5 Minor. Introduce ExpressionOrImplicitThisClassReceiver. 2015-11-17 01:25:14 +03:00
Michael Nedzelsky
e5e4f9e775 Hack for checking access to internal declarations during incremental compilation 2015-11-17 00:26:43 +03:00
Valentin Kipyatkov
40bc30aee2 Fixed compilation after rebase 2015-11-16 18:29:55 +03:00
Valentin Kipyatkov
927df1c4cd KT-5072 Values of extension function type are not seen in completion
#KT-5072 Fixed
2015-11-16 18:24:37 +03:00
Valentin Kipyatkov
2e2dfcb4a0 "invoke" from function types do not have any meaningful parameter names 2015-11-16 18:24:37 +03:00
Valentin Kipyatkov
5b668cb6a6 KT-9970 Regression: completion doesn't see private extension functions with parametrized receiver
#KT-9970 Fixed
2015-11-16 18:24:37 +03:00
Valentin Kipyatkov
6a26e2fd82 Sorting overloads in completion 2015-11-16 18:24:37 +03:00
Alexey Sedunov
ac8532ffce Quick Fixes: Implement 'Initialize with constructor parameter' quick-fix
#KT-6604 Fixed
2015-11-16 11:30:03 +03:00
Alexey Sedunov
138370ce5b Quick Fixes: Implement 'Move to constructor parameters' quick-fix
#KT-6604 In Progress
2015-11-16 11:30:02 +03:00
Alexey Sedunov
f66af7bdd4 Quick Fixes: Implement 'Initialize property' quick-fix 2015-11-16 11:30:00 +03:00
Alexey Sedunov
aeee8bafe6 Name Suggester: Suggest parameter name for the corresponding argument expression
#KT-8111 Fixed
2015-11-16 11:29:59 +03:00
Mikhail Glukhikh
f21603daf2 Source code fix according to KT-4475 2015-11-16 10:55:15 +03:00
Mikhail Glukhikh
fdd9eee849 DataClassAnnotationChecker --> DataClassDeclarationChecker 2015-11-16 10:45:58 +03:00
Mikhail Glukhikh
dd43674426 Data class must have at least one argument is reported on constructor parameter list now, if any #KT-9999 Fixed 2015-11-16 10:45:54 +03:00
Mikhail Glukhikh
86c37deaee Overriden setter now cannot weaken visibility #KT-3369 Fixed 2015-11-16 10:45:21 +03:00
Mikhail Glukhikh
02fb19c3ea Inner classes are no more allowed inside enum entries #KT-9750 Fixed
Forbidden use-case deleted from codegen tests
2015-11-16 10:44:20 +03:00
Ilya Gorbunov
3f4430087e Do not call deprecated public getProgressionFinalElement, call internal getProgressionLastElement instead.
ProgressionIterators do not compute final element by themselves, but use one computed by Progression.
Update testdata for LoadBuiltinsTest
2015-11-13 21:38:22 +03:00
Ilya Gorbunov
96f301fdec Support only integer primitive ranges and progressions in optimized for loop codegen.
Do not call getProgressionFinalElement, use new progression properties 'first' and 'last' instead.
2015-11-13 20:58:18 +03:00
Ilya Gorbunov
5d4e72ed7f Correct deprecation replacement for Progression constructors.
Update testdata for LoadBuiltinsTest
2015-11-13 18:59:38 +03:00
Denis Zharkov
e920ce709b Render captured type parameters in verbose mode 2015-11-13 14:59:04 +03:00
Denis Zharkov
6ae653e5a1 Implement stub building for inner types 2015-11-13 14:59:04 +03:00
Denis Zharkov
7500447e72 Implement serialization of inner types 2015-11-13 14:59:03 +03:00
Denis Zharkov
8cb85759c7 Fix written generic signature in case of inner types 2015-11-13 14:59:03 +03:00
Denis Zharkov
eea898abb5 Introduce PossiblyInnerType class
Use it when rendering inner types, similar logic will be used in different subsystems
2015-11-13 14:58:58 +03:00
Denis Zharkov
9c8ad9e442 Fix AbstractWriteSignatureTest
It didn't check anything in tests with class signatures
2015-11-13 14:47:29 +03:00
Denis Zharkov
7ee50e043c Use type constructor when finding findStaticallyKnownSubtype
See InnerClasses.testBareTypes
2015-11-13 14:47:29 +03:00
Denis Zharkov
daed74f9b2 Fix supertypes consistency check
See testKt5508:
`inner class B<S> : A<B<S>>()` is effectively the same as
`A<T>.B<S> : A<A<T>.B<S>>` or `B<S, T> : A<B<S, T>>`.
The latter is because we add outer class parameters to inner type constructor.

The problem is that we treat type constructors of first TP of 'A'
and of second type parameter (copy) of 'B' just the same and report INCONSISTENT_TYPE_PARAMETER_VALUES.

So we supposse it's more correct to compare type parameter descriptors instead
2015-11-13 14:47:29 +03:00
Denis Zharkov
188bcf0a03 Introduce TypeConstructorSubstitution.create
After latest changes type constructors of inner classes contains
additional type parameters that are copies of ones from outer class.

Their indices are correct, but they used only for subtyping check,
all entries within inner classes are still refers to original
descriptors having different indices.

Example:
class Outer<E> {
   inner class Inner<F> { // Inner's type constructor looks like Inner<F, E>
      fun foo(): E // refers to E in outer having index 0
   }
}

Indexed substitution does not work here because of intersecting indices,
so we replace it with common map substituion in such cases.
2015-11-13 14:47:29 +03:00
Denis Zharkov
c57dbcc602 Fix substition of inner classes constructors
It should have substituted class as containing declaration
2015-11-13 14:47:28 +03:00
Denis Zharkov
c5103f9ac4 Fix JavaClassifierType.getTypeArguments impls
Make them return arguments both for current classifier and for the outer one
2015-11-13 14:47:28 +03:00
Denis Zharkov
910718ff45 Weaken JvmRuntimeDescriptorLoaderTest assumptions
Sometimes descriptors in reflection may differ from compiled ones.
There is already SKIP_IN_RUNTIME_TEST but sometimes
it would be nice to record specific behaviour.

Solution is to add '.runtime.txt' near '.txt' files for tests containing
expected rendered descriptors in reflection.
2015-11-13 14:47:28 +03:00
Denis Zharkov
deea0643ad Refine type arguments resolution and rendering
In case of type constructors captured parameters from outer classes

 #KT-5510 Fixed
 #KT-3112 Fixed
 #KT-6325 Fixed
 #KT-408  Fixed
 #KT-6337 Fixed
2015-11-13 14:47:28 +03:00
Denis Zharkov
990bd7e71d Correct parameters of inner's class type constructor
Now it contains copies of outer's class constructor parameters
They are appended just after real type parameters
2015-11-13 14:47:28 +03:00
Denis Zharkov
7b4c0fb83a Use original type parameters for SAM adapter to constructor
It makes SAM descriptors more consistent with real ones
2015-11-13 14:47:28 +03:00
Denis Zharkov
d614adcd2a Obtain type parameters of constructor from containing class
Effectively this commit is just inlining of 'typeParameters' parameter
2015-11-13 14:47:28 +03:00
Denis Zharkov
c9aa75259b Introduce ClassDescriptor.declaredTypeParameters
Should be a subset of type constructor's parameters
2015-11-13 14:47:28 +03:00
Denis Zharkov
57094954a3 Minor. Simplify control-flow blocks 2015-11-13 14:47:28 +03:00
Denis Zharkov
b4b1d16134 Extract and cleanup 'resolveTypeForClass' and 'resolveTypeForTypeParameter' 2015-11-13 14:47:27 +03:00
Valentin Kipyatkov
e66f1c2d70 KT-9981 Code cleanup replace usages of !in incorrectly
#KT-9981 Fixed
2015-11-13 14:32:33 +03:00
Mikhail Glukhikh
2f4dbd2084 Code cleanup: get rid of unnecessary !! / ?. / as 2015-11-13 13:13:55 +03:00
Michael Bogdanov
7e8e4e9e1b Fix for KT-2789: NoSuchMethodError when calling trait function with default arguments that returns generic type, KT-9428 Abstract method with one parameter and one default parameter produces NoSuchMethodError, KT-9924 NoSuchMethod when replacing generic with specific type
#KT-2789 Fixed
 #KT-9428 Fixed
 #KT-9924 Fixed
2015-11-13 10:14:01 +03:00
Michael Bogdanov
3f995935d3 Fix for KT-9022: Wrong result when use break in if condition
#KT-9022 Fixed
2015-11-13 10:14:00 +03:00
Ilya Chernikov
20ca8cd435 Additional fix to the previous one: Disabling parallel builds without daemon again and undoing apprpriate fix to broken tests problem, since it effectively cancelled fix for parallel building itself and was causing exceptions on heavy builds
(cherry picked from commit bb66776)
2015-11-12 19:15:14 +01:00
Nikolay Krasko
0b01c8a4cf Minor: remove warnings in KotlinCliJavaFileManagerImpl 2015-11-12 19:19:44 +03:00
Nikolay Krasko
bd4ffb9ced Announce we are going to invalidate file to collect invalidatation trace
See DebugUtil.currentInvalidationTrace()
2015-11-12 19:19:43 +03:00
Nikolay Krasko
33fd247bde Test that fails with package prefixes but works good without them 2015-11-12 19:19:42 +03:00
Nikolay Krasko
03310491d0 Update to idea 143.747.5 2015-11-12 19:19:41 +03:00
Ilya Chernikov
4643d7fc4d Disabling parallel builds without daemon again and undoing apprpriate fix to broken tests problem, since it effectively cancelled fix for parallel building itself and was causing exceptions on heavy builds
(cherry picked from commit 0610452)
2015-11-12 17:15:14 +01:00
Zalim Bashorov
b7772f32ce Minor: add more logging to KotlinBuilder 2015-11-12 18:39:43 +03:00
Dmitry Jemerov
c734cad429 fix typo: 'a' before uuid 2015-11-12 14:22:58 +01:00
Michael Bogdanov
de6731cb4b Additional diagnostic for KT-9980: KotlinFrontEndException: Exception while analyzing expression 2015-11-12 14:38:09 +03:00
Zalim Bashorov
ca71f929f9 Add new tests for incremental compilation and disable the one for current IC 2015-11-12 13:43:25 +03:00
Zalim Bashorov
e1ad942804 Add separate build logs for tests which result is different in the new incremental compilation 2015-11-12 13:43:24 +03:00
Zalim Bashorov
5a6c04357b Add the ability to have separate log file for experimental incremental compilation tests 2015-11-12 13:43:23 +03:00
Zalim Bashorov
5ca7ce2b50 Make accessingFunctionsViaRenamedFileClass test more sensible 2015-11-12 13:43:22 +03:00
Zalim Bashorov
f144bb38da ChangesInfo -> CompilationResult 2015-11-12 13:43:21 +03:00
Zalim Bashorov
d4a18a3ef2 Integrate components of the new incremental compilation 2015-11-12 13:43:20 +03:00
Zalim Bashorov
4caf1b54f7 Minor: re-sort statements in KotlinBuilder::doBuild 2015-11-12 13:43:19 +03:00
Zalim Bashorov
3ce84d04e6 Minor: get rid of KotlinBuilder.ChangesProcessor 2015-11-12 13:43:19 +03:00
Zalim Bashorov
2944e998f7 Minor: don't trim file content in KotlinTestUtils#doLoadFile 2015-11-12 13:43:18 +03:00
Zalim Bashorov
28366a0bf4 Fix refer to classes from default package in SMAP 2015-11-11 22:59:05 +03:00
Dmitry Jemerov
45ef9b02c4 remove some leftovers of old package facades in IDE code 2015-11-11 19:25:11 +01:00
Michael Nedzelsky
5b59fc74bc fix access from tests to internal elements in production code in case of circular dependency 2015-11-11 19:16:21 +03:00
Ilya Gorbunov
a8b11ff07b Make MutableMap.set return Unit
#KT-7853 Fixed
2015-11-11 19:00:10 +03:00
Ilya Gorbunov
7844030ba4 Restore correct sorting order (after cleanup in 17fc1d95) 2015-11-11 19:00:09 +03:00
Ilya Gorbunov
a793a63b73 Simplify message expression from lambda argument when converting assert to if. 2015-11-11 19:00:08 +03:00
Ilya Gorbunov
3639afafce Deprecated with ERROR preconditions with eager message. 2015-11-11 19:00:03 +03:00
Ilya Gorbunov
07c570f35d Replace getStackTrace usages in j2k and testData. 2015-11-11 18:59:56 +03:00
Ilya Gorbunov
0579f6c8bf Replace Regex.match and matchAll usages 2015-11-11 18:59:55 +03:00
Ilya Gorbunov
f06d521bfe Refactor intention test files enumerating, do not use deprecated filter method, which would get another behavior after dropping deprecated one. 2015-11-11 18:59:54 +03:00
Ilya Gorbunov
be9b14545f Drop deprecations and tighten up left ones. 2015-11-11 18:59:53 +03:00
Ilya Gorbunov
5b484f1e05 Make emptyMap upperbound to be Any? rather than Any.
#KT-9963
2015-11-11 17:14:41 +03:00
Dmitry Jemerov
6f2fb3f9aa don't analyze class repeatedly if we already found an annotated member there
#KT-8557 Fixed
2015-11-11 15:09:18 +01:00
Valentin Kipyatkov
de11d571ef KT-9928 Replacement not offered for a usage of symbol deprecated with DeprecationLevel.ERROR
#KT-9928 Fixed
2015-11-11 16:49:52 +03:00
Ilya Gorbunov
75f5cec190 Minor: remove inapplicable operator modifiers. 2015-11-11 16:41:40 +03:00
Ilya Gorbunov
f7135dfe50 Do not override default AbstractList iterator() implementation for primitiveArray.asList wrappers.
#KT-9927 Fixed
2015-11-11 16:41:39 +03:00
Michael Bogdanov
3651ec9294 Support access to protected members within inline functions 2015-11-11 14:34:48 +03:00
Michael Bogdanov
5a8ead0092 Fix for KT-8204: java.lang.VerifyError for super method invocation in inline function
#KT-8204 Fixed
2015-11-11 14:34:47 +03:00
Mikhail Glukhikh
04f7805d52 Minor comment to CastClassReceiver 2015-11-11 13:30:19 +03:00
Anton Sukhonosenko
c442eb89e3 #KT-5115 Fixed 2015-11-09 22:25:14 +03:00
21853 changed files with 505397 additions and 232038 deletions

8
.gitignore vendored
View File

@@ -13,3 +13,11 @@ workspace.xml
*.versionsBackup
/idea/testData/debugger/tinyApp/classes*
/jps-plugin/testData/kannotator
ultimate/.DS_Store
ultimate/.idea/shelf
ultimate/dependencies
ultimate/ideaSDK
ultimate/out
ultimate/tmp
ultimate/workspace.xml
ultimate/*.versionsBackup

4
.idea/ant.xml generated
View File

@@ -3,7 +3,7 @@
<component name="AntConfiguration">
<buildFile url="file://$PROJECT_DIR$/compiler/frontend/buildLexer.xml" />
<buildFile url="file://$PROJECT_DIR$/build.xml">
<antCommandLine value="-J-XX:MaxPermSize=100m" />
<antCommandLine value="-J-XX:MaxPermSize=100m -J-ea" />
<maximumHeapSize value="1024" />
</buildFile>
<buildFile url="file://$PROJECT_DIR$/update_dependencies.xml" />
@@ -11,12 +11,12 @@
<maximumHeapSize value="512" />
</buildFile>
<buildFile url="file://$PROJECT_DIR$/idea-runner/runner.xml" />
<buildFile url="file://$PROJECT_DIR$/replicate_versions.xml" />
<buildFile url="file://$PROJECT_DIR$/libraries/build-docs.xml">
<maximumHeapSize value="1024" />
<properties>
<property name="dokka.path" value="../../dokka" />
</properties>
</buildFile>
<buildFile url="file://$PROJECT_DIR$/TeamCityRelay.xml" />
</component>
</project>

View File

@@ -1,26 +0,0 @@
<component name="ArtifactManager">
<artifact name="KotlinAndroidExtensions">
<output-path>$PROJECT_DIR$/out/artifacts/KotlinAndroidExtensions</output-path>
<properties id="ant-postprocessing">
<options enabled="true">
<file>file://$PROJECT_DIR$/idea-runner/runner.xml</file>
<target>copy-runtime-for-idea-plugin</target>
</options>
</properties>
<root id="root">
<element id="directory" name="lib">
<element id="archive" name="kotlin-android-extensions.jar">
<element id="module-output" name="android-idea-plugin" />
</element>
<element id="directory" name="jps">
<element id="archive" name="kotlin-android-extensions-jps.jar">
<element id="module-output" name="android-jps-plugin" />
</element>
</element>
<element id="archive" name="android-compiler-plugin.jar">
<element id="module-output" name="android-compiler-plugin" />
</element>
</element>
</root>
</artifact>
</component>

9
.idea/artifacts/KotlinFormatter.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<component name="ArtifactManager">
<artifact type="jar" name="KotlinFormatter">
<output-path>$PROJECT_DIR$/out/artifacts/internal</output-path>
<root id="archive" name="kotlin-formatter.jar">
<element id="module-output" name="formatter" />
<element id="dir-copy" path="$PROJECT_DIR$/idea/formatter" />
</root>
</artifact>
</component>

View File

@@ -11,7 +11,7 @@
<element id="directory" name="META-INF">
<element id="dir-copy" path="$PROJECT_DIR$/jps-plugin/src/META-INF" />
</element>
<element id="extracted-dir" path="$PROJECT_DIR$/dependencies/cli-parser-1.1.1.jar" path-in-jar="/" />
<element id="extracted-dir" path="$PROJECT_DIR$/dependencies/cli-parser-1.1.2.jar" path-in-jar="/" />
<element id="module-output" name="cli-common" />
<element id="module-output" name="idea-jps-common" />
<element id="module-output" name="jps-plugin" />
@@ -19,10 +19,12 @@
<element id="module-output" name="util" />
<element id="module-output" name="util.runtime" />
<element id="file-copy" path="$PROJECT_DIR$/resources/kotlinManifest.properties" />
<element id="module-output" name="kotlinr" />
<element id="module-output" name="rmi-interface" />
<element id="module-output" name="daemon-client" />
<element id="module-output" name="daemon-common" />
<element id="module-output" name="deserialization" />
<element id="extracted-dir" path="$PROJECT_DIR$/dependencies/native-platform-uberjar.jar" path-in-jar="/" />
<element id="module-output" name="android-extensions-jps" />
<element id="module-output" name="build-common" />
</root>
</artifact>
</component>

View File

@@ -37,21 +37,44 @@
<element id="module-output" name="idea-analysis" />
<element id="module-output" name="ide-common" />
<element id="file-copy" path="$PROJECT_DIR$/resources/kotlinManifest.properties" />
<element id="module-output" name="kotlin-android-plugin" />
<element id="module-output" name="idea-android" />
<element id="module-output" name="idea-android-output-parser" />
<element id="module-output" name="js.serializer" />
<element id="module-output" name="serialization" />
<element id="module-output" name="idea-completion" />
<element id="module-output" name="idea-core" />
<element id="module-output" name="idea-js" />
<element id="module-output" name="container" />
<element id="module-output" name="rmi-interface" />
<element id="module-output" name="daemon-common" />
<element id="module-output" name="idea-repl" />
<element id="module-output" name="idea-live-templates" />
<element id="module-output" name="resolution" />
<element id="module-output" name="plugin-api" />
<element id="module-output" name="idea-ultimate" />
<element id="module-output" name="formatter" />
<element id="module-output" name="idea-maven" />
<element id="extracted-dir" path="$PROJECT_DIR$/dependencies/protobuf-2.6.1.jar" path-in-jar="/" />
</element>
<element id="library" level="project" name="javax.inject" />
<element id="directory" name="jps">
<element id="artifact" artifact-name="KotlinJpsPlugin" />
</element>
<element id="library" level="project" name="markdown" />
<element id="archive" name="kotlin-android-extensions-plugin.jar">
<element id="module-output" name="android-extensions-idea" />
</element>
<element id="archive" name="kotlin-android-extensions-compiler-plugin.jar">
<element id="module-output" name="android-extensions-compiler" />
</element>
<element id="archive" name="android-lint.jar">
<element id="module-output" name="uast-kotlin" />
<element id="module-output" name="lint-idea" />
<element id="module-output" name="uast-java" />
<element id="module-output" name="uast-common" />
<element id="module-output" name="lint-checks" />
<element id="library" level="project" name="guava" />
<element id="module-output" name="lint-api" />
<element id="module-output" name="uast-android" />
</element>
</element>
<element id="directory" name="kotlinc">
<element id="dir-copy" path="$PROJECT_DIR$/dist/kotlinc" />

8
.idea/codeInsightSettings.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="JavaProjectCodeInsightSettings">
<excluded-names>
<name>kotlin.reflect.jvm.internal.impl</name>
</excluded-names>
</component>
</project>

17
.idea/compiler.xml generated
View File

@@ -23,8 +23,19 @@
<processorPath useClasspath="true" />
</profile>
</annotationProcessing>
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_STRING" value="-target 1.6" />
<bytecodeTargetLevel>
<module name="android-studio" target="1.8" />
<module name="bare-plugin" target="1.8" />
<module name="idea" target="1.8" />
<module name="idea-analysis" target="1.8" />
<module name="idea-completion" target="1.8" />
<module name="idea-core" target="1.8" />
<module name="idea-live-templates" target="1.8" />
<module name="idea-repl" target="1.8" />
<module name="idea-runner" target="1.8" />
<module name="idea-test-framework" target="1.8" />
<module name="j2k" target="1.8" />
<module name="kannotator-jps-plugin-test" target="1.8" />
</bytecodeTargetLevel>
</component>
</project>

8
.idea/dictionaries/Alexey_Sedunov.xml generated Normal file
View File

@@ -0,0 +1,8 @@
<component name="ProjectDictionaryState">
<dictionary name="Alexey.Sedunov">
<words>
<w>inplace</w>
<w>renamer</w>
</words>
</dictionary>
</component>

View File

@@ -2,6 +2,7 @@
<dictionary name="Nikolay.Krasko">
<words>
<w>accessors</w>
<w>fqname</w>
<w>goto</w>
<w>gradle</w>
<w>intrinsics</w>

View File

@@ -2,8 +2,9 @@
<dictionary name="bashor">
<words>
<w>ctor</w>
<w>interner</w>
<w>lookups</w>
<w>unescape</w>
</words>
</dictionary>
</component>
</component>

10
.idea/dictionaries/dzharkov.xml generated Normal file
View File

@@ -0,0 +1,10 @@
<component name="ProjectDictionaryState">
<dictionary name="dzharkov">
<words>
<w>checkcast</w>
<w>coroutine</w>
<w>insn</w>
<w>liveness</w>
</words>
</dictionary>
</component>

View File

@@ -17,6 +17,7 @@
<w>renderers</w>
<w>rparenth</w>
<w>selectioner</w>
<w>summand</w>
<w>unpluralize</w>
<w>weighers</w>
</words>

BIN
.idea/icon.png generated Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@@ -273,6 +273,9 @@
<inspection_tool class="ObsoleteCollection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoreRequiredObsoleteCollectionTypes" value="false" />
</inspection_tool>
<inspection_tool class="PackageDirectoryMismatch" enabled="true" level="WARNING" enabled_by_default="false">
<scope name="all except testData" level="WARNING" enabled="true" />
</inspection_tool>
<inspection_tool class="ProtectedMemberInFinalClass" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PublicFieldAccessedInSynchronizedContext" enabled="true" level="WARNING" enabled_by_default="true" />
<inspection_tool class="PyCompatibilityInspection" enabled="true" level="ERROR" enabled_by_default="true">

6
.idea/kotlinc.xml generated Normal file
View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="KotlinCompilerSettings">
<option name="additionalArguments" value="-version -Xallow-kotlin-package -Xskip-metadata-version-check" />
</component>
</project>

View File

@@ -6,6 +6,7 @@
<CLASSES>
<root url="file://$PROJECT_DIR$/ideaSDK/plugins/android/lib" />
<root url="file://$PROJECT_DIR$/ideaSDK/plugins/android/lib/jps" />
<root url="jar://$PROJECT_DIR$/ideaSDK/lib/android-common.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>

View File

@@ -1,11 +1,11 @@
<component name="libraryTable">
<library name="cli-parser">
<CLASSES>
<root url="jar://$PROJECT_DIR$/dependencies/cli-parser-1.1.1.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/cli-parser-1.1.2.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$PROJECT_DIR$/dependencies/cli-parser-1.1.1-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/cli-parser-1.1.2-sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -11,7 +11,6 @@
<SOURCES>
<root url="jar://$PROJECT_DIR$/dependencies/guava-17.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/dependencies/asm5-src.zip!/" />
<root url="jar://$PROJECT_DIR$/dependencies/cli-parser-1.1.1-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/ideaSDK/lib" recursive="false" />

View File

@@ -0,0 +1,11 @@
<component name="libraryTable">
<library name="java-decompiler-plugin">
<CLASSES>
<root url="jar://$PROJECT_DIR$/ideaSDK/plugins/java-decompiler/lib/java-decompiler.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/" />
</SOURCES>
</library>
</component>

View File

@@ -8,8 +8,18 @@
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="jar://$PROJECT_DIR$/dependencies/protobuf-java-2.5.0-sources.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/antLayout/src" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/jps-builders/src" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/jps-builders/testSrc" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/jps-launcher/src" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/model-api/src" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/model-impl/src" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/model-impl/testSrc" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/model-serialization/src" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/model-serialization/testSrc" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/plugin-system/src" />
<root url="jar://$PROJECT_DIR$/ideaSDK/sources/sources.jar!/jps/standalone-builder/src" />
</SOURCES>
<jarDirectory url="file://$PROJECT_DIR$/ideaSDK/jps" recursive="false" />
</library>

9
.idea/libraries/kotlin_reflect.xml generated Normal file
View File

@@ -0,0 +1,9 @@
<component name="libraryTable">
<library name="kotlin-reflect">
<CLASSES>
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</component>

View File

@@ -2,11 +2,12 @@
<library name="kotlin-runtime">
<CLASSES>
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-runtime.jar!/" />
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-reflect.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="file://$PROJECT_DIR$/libraries/stdlib/src" />
<root url="file://$PROJECT_DIR$/core/builtins/native" />
<root url="file://$PROJECT_DIR$/core/builtins/src" />
</SOURCES>
</library>
</component>

13
.idea/libraries/kotlin_test.xml generated Normal file
View File

@@ -0,0 +1,13 @@
<component name="libraryTable">
<library name="kotlin-test">
<CLASSES>
<root url="jar://$KOTLIN_BUNDLED$/lib/kotlin-test.jar!/"/>
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="file://$PROJECT_DIR$/libraries/kotlin.test/shared/src/main/kotlin" />
<root url="file://$PROJECT_DIR$/libraries/kotlin.test/shared/src/main/kotlin.jvm" />
<root url="file://$PROJECT_DIR$/libraries/kotlin.test/junit/src/main/kotlin" />
</SOURCES>
</library>
</component>

View File

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

2
.idea/misc.xml generated
View File

@@ -49,7 +49,7 @@
<component name="ProjectResources">
<default-html-doctype>http://www.w3.org/1999/xhtml</default-html-doctype>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" default="false" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
<component name="SuppressABINotification">

37
.idea/modules.xml generated
View File

@@ -3,9 +3,10 @@
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/Kotlin.iml" filepath="$PROJECT_DIR$/Kotlin.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/android-compiler-plugin/android-compiler-plugin.iml" filepath="$PROJECT_DIR$/plugins/android-compiler-plugin/android-compiler-plugin.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/android-idea-plugin/android-idea-plugin.iml" filepath="$PROJECT_DIR$/plugins/android-idea-plugin/android-idea-plugin.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/android-jps-plugin/android-jps-plugin.iml" filepath="$PROJECT_DIR$/plugins/android-jps-plugin/android-jps-plugin.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/plugins/lint/android-annotations/android-annotations.iml" filepath="$PROJECT_DIR$/plugins/lint/android-annotations/android-annotations.iml" />
<module fileurl="file://$PROJECT_DIR$/plugins/android-extensions/android-extensions-compiler/android-extensions-compiler.iml" filepath="$PROJECT_DIR$/plugins/android-extensions/android-extensions-compiler/android-extensions-compiler.iml" group="plugins/android-extensions" />
<module fileurl="file://$PROJECT_DIR$/plugins/android-extensions/android-extensions-idea/android-extensions-idea.iml" filepath="$PROJECT_DIR$/plugins/android-extensions/android-extensions-idea/android-extensions-idea.iml" group="plugins/android-extensions" />
<module fileurl="file://$PROJECT_DIR$/plugins/android-extensions/android-extensions-jps/android-extensions-jps.iml" filepath="$PROJECT_DIR$/plugins/android-extensions/android-extensions-jps/android-extensions-jps.iml" group="plugins/android-extensions" />
<module fileurl="file://$PROJECT_DIR$/android-studio/android-studio.iml" filepath="$PROJECT_DIR$/android-studio/android-studio.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/compiler/android-tests/android-tests.iml" filepath="$PROJECT_DIR$/compiler/android-tests/android-tests.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/plugins/annotation-collector/annotation-collector.iml" filepath="$PROJECT_DIR$/plugins/annotation-collector/annotation-collector.iml" group="plugins" />
@@ -13,19 +14,25 @@
<module fileurl="file://$PROJECT_DIR$/compiler/backend/backend.iml" filepath="$PROJECT_DIR$/compiler/backend/backend.iml" group="compiler/java" />
<module fileurl="file://$PROJECT_DIR$/compiler/backend-common/backend-common.iml" filepath="$PROJECT_DIR$/compiler/backend-common/backend-common.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/jps-plugin/bare-plugin/bare-plugin.iml" filepath="$PROJECT_DIR$/jps-plugin/bare-plugin/bare-plugin.iml" group="ide/jps" />
<module fileurl="file://$PROJECT_DIR$/build-common/build-common.iml" filepath="$PROJECT_DIR$/build-common/build-common.iml" />
<module fileurl="file://$PROJECT_DIR$/core/builtins/builtins.iml" filepath="$PROJECT_DIR$/core/builtins/builtins.iml" group="core" />
<module fileurl="file://$PROJECT_DIR$/compiler/builtins-serializer/builtins-serializer.iml" filepath="$PROJECT_DIR$/compiler/builtins-serializer/builtins-serializer.iml" group="compiler/cli" />
<module fileurl="file://$PROJECT_DIR$/compiler/cli/cli.iml" filepath="$PROJECT_DIR$/compiler/cli/cli.iml" group="compiler/cli" />
<module fileurl="file://$PROJECT_DIR$/compiler/cli/cli-common/cli-common.iml" filepath="$PROJECT_DIR$/compiler/cli/cli-common/cli-common.iml" group="compiler/cli" />
<module fileurl="file://$PROJECT_DIR$/compiler/cli/cli-runner/cli-runner.iml" filepath="$PROJECT_DIR$/compiler/cli/cli-runner/cli-runner.iml" group="compiler/cli" />
<module fileurl="file://$PROJECT_DIR$/compiler/tests/compiler-tests.iml" filepath="$PROJECT_DIR$/compiler/tests/compiler-tests.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/compiler/tests-java8/compiler-tests-java8.iml" filepath="$PROJECT_DIR$/compiler/tests-java8/compiler-tests-java8.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/compiler/conditional-preprocessor/conditional-preprocessor.iml" filepath="$PROJECT_DIR$/compiler/conditional-preprocessor/conditional-preprocessor.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/compiler/container/container.iml" filepath="$PROJECT_DIR$/compiler/container/container.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/compiler/daemon/daemon.iml" filepath="$PROJECT_DIR$/compiler/daemon/daemon.iml" group="compiler/daemon" />
<module fileurl="file://$PROJECT_DIR$/compiler/daemon/daemon-client/daemon-client.iml" filepath="$PROJECT_DIR$/compiler/daemon/daemon-client/daemon-client.iml" group="compiler/daemon" />
<module fileurl="file://$PROJECT_DIR$/compiler/daemon/daemon-common/daemon-common.iml" filepath="$PROJECT_DIR$/compiler/daemon/daemon-common/daemon-common.iml" group="compiler/daemon" />
<module fileurl="file://$PROJECT_DIR$/core/descriptor.loader.java/descriptor.loader.java.iml" filepath="$PROJECT_DIR$/core/descriptor.loader.java/descriptor.loader.java.iml" group="core" />
<module fileurl="file://$PROJECT_DIR$/core/descriptors/descriptors.iml" filepath="$PROJECT_DIR$/core/descriptors/descriptors.iml" group="core" />
<module fileurl="file://$PROJECT_DIR$/core/descriptors.runtime/descriptors.runtime.iml" filepath="$PROJECT_DIR$/core/descriptors.runtime/descriptors.runtime.iml" group="core" />
<module fileurl="file://$PROJECT_DIR$/core/deserialization/deserialization.iml" filepath="$PROJECT_DIR$/core/deserialization/deserialization.iml" group="core" />
<module fileurl="file://$PROJECT_DIR$/eval4j/eval4j.iml" filepath="$PROJECT_DIR$/eval4j/eval4j.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/formatter/formatter.iml" filepath="$PROJECT_DIR$/idea/formatter/formatter.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/compiler/frontend/frontend.iml" filepath="$PROJECT_DIR$/compiler/frontend/frontend.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/compiler/frontend.java/frontend.java.iml" filepath="$PROJECT_DIR$/compiler/frontend.java/frontend.java.iml" group="compiler/java" />
<module fileurl="file://$PROJECT_DIR$/generators/generators.iml" filepath="$PROJECT_DIR$/generators/generators.iml" group="infrastructure" />
@@ -33,17 +40,20 @@
<module fileurl="file://$PROJECT_DIR$/idea/ide-common/ide-common.iml" filepath="$PROJECT_DIR$/idea/ide-common/ide-common.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea.iml" filepath="$PROJECT_DIR$/idea/idea.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-analysis/idea-analysis.iml" filepath="$PROJECT_DIR$/idea/idea-analysis/idea-analysis.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-android/idea-android.iml" filepath="$PROJECT_DIR$/idea/idea-android/idea-android.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-android/idea-android-output-parser/idea-android-output-parser.iml" filepath="$PROJECT_DIR$/idea/idea-android/idea-android-output-parser/idea-android-output-parser.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-completion/idea-completion.iml" filepath="$PROJECT_DIR$/idea/idea-completion/idea-completion.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-core/idea-core.iml" filepath="$PROJECT_DIR$/idea/idea-core/idea-core.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-jps-common/idea-jps-common.iml" filepath="$PROJECT_DIR$/idea/idea-jps-common/idea-jps-common.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-js/idea-js.iml" filepath="$PROJECT_DIR$/idea/idea-js/idea-js.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-repl/idea-repl.iml" filepath="$PROJECT_DIR$/idea/idea-repl/idea-repl.iml" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-live-templates/idea-live-templates.iml" filepath="$PROJECT_DIR$/idea/idea-live-templates/idea-live-templates.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-maven/idea-maven.iml" filepath="$PROJECT_DIR$/idea/idea-maven/idea-maven.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-repl/idea-repl.iml" filepath="$PROJECT_DIR$/idea/idea-repl/idea-repl.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea-runner/idea-runner.iml" filepath="$PROJECT_DIR$/idea-runner/idea-runner.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/idea/idea-test-framework/idea-test-framework.iml" filepath="$PROJECT_DIR$/idea/idea-test-framework/idea-test-framework.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/compiler/preloader/instrumentation/instrumentation.iml" filepath="$PROJECT_DIR$/compiler/preloader/instrumentation/instrumentation.iml" group="compiler/cli" />
<module fileurl="file://$PROJECT_DIR$/j2k/j2k.iml" filepath="$PROJECT_DIR$/j2k/j2k.iml" group="j2k" />
<module fileurl="file://$PROJECT_DIR$/compiler/java8-tests/java8-tests.iml" filepath="$PROJECT_DIR$/compiler/java8-tests/java8-tests.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/jps-plugin/jps-plugin.iml" filepath="$PROJECT_DIR$/jps-plugin/jps-plugin.iml" group="ide/jps" />
<module fileurl="file://$PROJECT_DIR$/jps-plugin/jps-tests/jps-tests.iml" filepath="$PROJECT_DIR$/jps-plugin/jps-tests/jps-tests.iml" group="ide/jps" />
<module fileurl="file://$PROJECT_DIR$/js/js.dart-ast/js.dart-ast.iml" filepath="$PROJECT_DIR$/js/js.dart-ast/js.dart-ast.iml" group="compiler/js" />
<module fileurl="file://$PROJECT_DIR$/js/js.frontend/js.frontend.iml" filepath="$PROJECT_DIR$/js/js.frontend/js.frontend.iml" group="compiler/js" />
<module fileurl="file://$PROJECT_DIR$/js/js.inliner/js.inliner.iml" filepath="$PROJECT_DIR$/js/js.inliner/js.inliner.iml" group="compiler/js" />
@@ -52,16 +62,23 @@
<module fileurl="file://$PROJECT_DIR$/js/js.tests/js.tests.iml" filepath="$PROJECT_DIR$/js/js.tests/js.tests.iml" group="compiler/js" />
<module fileurl="file://$PROJECT_DIR$/js/js.translator/js.translator.iml" filepath="$PROJECT_DIR$/js/js.translator/js.translator.iml" group="compiler/js" />
<module fileurl="file://$PROJECT_DIR$/jps-plugin/kannotator-jps-plugin-test/kannotator-jps-plugin-test.iml" filepath="$PROJECT_DIR$/jps-plugin/kannotator-jps-plugin-test/kannotator-jps-plugin-test.iml" group="ide/jps" />
<module fileurl="file://$PROJECT_DIR$/idea/kotlin-android-plugin/kotlin-android-plugin.iml" filepath="$PROJECT_DIR$/idea/kotlin-android-plugin/kotlin-android-plugin.iml" group="ide" />
<module fileurl="file://$PROJECT_DIR$/compiler/rmi/kotlinr/kotlinr.iml" filepath="$PROJECT_DIR$/compiler/rmi/kotlinr/kotlinr.iml" group="rmi" />
<module fileurl="file://$PROJECT_DIR$/compiler/light-classes/light-classes.iml" filepath="$PROJECT_DIR$/compiler/light-classes/light-classes.iml" group="compiler/java" />
<module fileurl="file://$PROJECT_DIR$/plugins/lint/lint-api/lint-api.iml" filepath="$PROJECT_DIR$/plugins/lint/lint-api/lint-api.iml" group="plugins/lint" />
<module fileurl="file://$PROJECT_DIR$/plugins/lint/lint-checks/lint-checks.iml" filepath="$PROJECT_DIR$/plugins/lint/lint-checks/lint-checks.iml" group="plugins/lint" />
<module fileurl="file://$PROJECT_DIR$/plugins/lint/lint-idea/lint-idea.iml" filepath="$PROJECT_DIR$/plugins/lint/lint-idea/lint-idea.iml" group="plugins/lint" />
<module fileurl="file://$PROJECT_DIR$/non-compiler-tests/non-compiler-tests.iml" filepath="$PROJECT_DIR$/non-compiler-tests/non-compiler-tests.iml" />
<module fileurl="file://$PROJECT_DIR$/compiler/plugin-api/plugin-api.iml" filepath="$PROJECT_DIR$/compiler/plugin-api/plugin-api.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/plugins/plugins-tests/plugins-tests.iml" filepath="$PROJECT_DIR$/plugins/plugins-tests/plugins-tests.iml" group="plugins" />
<module fileurl="file://$PROJECT_DIR$/compiler/preloader/preloader.iml" filepath="$PROJECT_DIR$/compiler/preloader/preloader.iml" group="compiler/cli" />
<module fileurl="file://$PROJECT_DIR$/core/reflection.jvm/reflection.jvm.iml" filepath="$PROJECT_DIR$/core/reflection.jvm/reflection.jvm.iml" group="core" />
<module fileurl="file://$PROJECT_DIR$/compiler/rmi/rmi-interface/rmi-interface.iml" filepath="$PROJECT_DIR$/compiler/rmi/rmi-interface/rmi-interface.iml" group="rmi" />
<module fileurl="file://$PROJECT_DIR$/compiler/rmi/rmi-server/rmi-server.iml" filepath="$PROJECT_DIR$/compiler/rmi/rmi-server/rmi-server.iml" group="rmi" />
<module fileurl="file://$PROJECT_DIR$/compiler/resolution/resolution.iml" filepath="$PROJECT_DIR$/compiler/resolution/resolution.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/core/runtime.jvm/runtime.jvm.iml" filepath="$PROJECT_DIR$/core/runtime.jvm/runtime.jvm.iml" group="core" />
<module fileurl="file://$PROJECT_DIR$/compiler/serialization/serialization.iml" filepath="$PROJECT_DIR$/compiler/serialization/serialization.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/compiler/tests-common/tests-common.iml" filepath="$PROJECT_DIR$/compiler/tests-common/tests-common.iml" group="compiler" />
<module fileurl="file://$PROJECT_DIR$/plugins/lint/uast-android/uast-android.iml" filepath="$PROJECT_DIR$/plugins/lint/uast-android/uast-android.iml" group="plugins/lint" />
<module fileurl="file://$PROJECT_DIR$/plugins/uast-common/uast-common.iml" filepath="$PROJECT_DIR$/plugins/uast-common/uast-common.iml" group="plugins/lint" />
<module fileurl="file://$PROJECT_DIR$/plugins/uast-java/uast-java.iml" filepath="$PROJECT_DIR$/plugins/uast-java/uast-java.iml" group="plugins/lint" />
<module fileurl="file://$PROJECT_DIR$/plugins/uast-kotlin/uast-kotlin.iml" filepath="$PROJECT_DIR$/plugins/uast-kotlin/uast-kotlin.iml" group="plugins/lint" />
<module fileurl="file://$PROJECT_DIR$/compiler/util/util.iml" filepath="$PROJECT_DIR$/compiler/util/util.iml" />
<module fileurl="file://$PROJECT_DIR$/core/util.runtime/util.runtime.iml" filepath="$PROJECT_DIR$/core/util.runtime/util.runtime.iml" group="core" />
</modules>

View File

@@ -1,37 +1,8 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="All Compiler Tests" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="org.jetbrains.kotlin.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="compiler-tests" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="PACKAGE_NAME" value="org.jetbrains.kotlin" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx900m -XX:MaxPermSize=320m -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=64m" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Profile " />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<configuration default="false" name="All Compiler Tests" type="CompoundRunConfigurationType" factoryName="Compound Run Configuration">
<toRun type="JUnit" name="Compiler Tests" />
<toRun type="JUnit" name="Java 8 Tests" />
<toRun type="JUnit" name="Js-backend tests" />
<method />
</configuration>
</component>

View File

@@ -8,12 +8,12 @@
</extension>
<module name="idea" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="org.jetbrains.kotlin" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx900m -XX:MaxPermSize=320m -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=64m" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx1250m -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=64m -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />

View File

@@ -8,12 +8,12 @@
</extension>
<module name="compiler-tests" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="org.jetbrains.kotlin.codegen" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx900m -XX:MaxPermSize=320m -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=64m" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx900m -XX:MaxPermSize=320m -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=64m -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />

View File

@@ -0,0 +1,39 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="All Non Compiler Tests" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="org.jetbrains.kotlin.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="non-compiler-tests" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx1300m -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=128m -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs>
<env name="NO_FS_ROOTS_ACCESS_CHECK" value="true" />
</envs>
<patterns />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="53032" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Profile " />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
</component>

View File

@@ -1,39 +1,7 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="All Tests" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="org.jetbrains.kotlin.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="generators" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx900m -XX:MaxPermSize=400m -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=128m" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs>
<env name="NO_FS_ROOTS_ACCESS_CHECK" value="true" />
</envs>
<patterns />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="53032" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Profile " />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<configuration default="false" name="All Tests" type="CompoundRunConfigurationType" factoryName="Compound Run Configuration">
<toRun type="CompoundRunConfigurationType" name="All Compiler Tests" />
<toRun type="JUnit" name="All Non Compiler Tests" />
<method />
</configuration>
</component>

View File

@@ -0,0 +1,26 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="All in jps-tests" type="JUnit" factoryName="JUnit" nameIsGenerated="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="jps-tests" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-Xmx1250m -XX:ReservedCodeCacheSize=64m -XX:+HeapDumpOnOutOfMemoryError -ea -Didea.is.internal=true -Didea.debug.mode=true -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.io.useCanonCaches=false -Dplugin.path=$PROJECT_DIR$/out/artifacts/Kotlin -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Profile ">
<option name="myExternalizedOptions" />
</RunnerSettings>
<method />
</configuration>
</component>

View File

@@ -2,7 +2,7 @@
<configuration default="false" name="Android Studio" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.intellij.idea.Main" />
<option name="VM_PARAMETERS" value="-Didea.paths.selector=AndroidStudioPreview -Didea.platform.prefix=AndroidStudio -Xmx800m -XX:ReservedCodeCacheSize=64m -XX:MaxPermSize=450m -XX:+HeapDumpOnOutOfMemoryError -ea -Didea.is.internal=true -Didea.debug.mode=true -Didea.system.path=../system-idea -Didea.config.path=../config-idea -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.io.useCanonCaches=false -Dplugin.path=$PROJECT_DIR$/out/artifacts/Kotlin,$PROJECT_DIR$/out/artifacts/KotlinAndroidExtensions" />
<option name="VM_PARAMETERS" value="-Didea.paths.selector=AndroidStudioPreview -Didea.platform.prefix=AndroidStudio -Xmx1250m -XX:ReservedCodeCacheSize=64m -XX:+HeapDumpOnOutOfMemoryError -ea -Didea.is.internal=true -Didea.debug.mode=true -Didea.system.path=../system-idea -Didea.config.path=../config-idea -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.io.useCanonCaches=false -Dplugin.path=$PROJECT_DIR$/out/artifacts/Kotlin,$PROJECT_DIR$/out/artifacts/KotlinAndroidExtensions" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/android-studio/sdk/bin" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
@@ -24,9 +24,7 @@
<option name="BuildArtifacts" enabled="true">
<artifact name="KotlinPlugin" />
</option>
<option name="BuildArtifacts" enabled="true">
<artifact name="KotlinAndroidExtensions" />
</option>
<option name="BuildArtifacts" enabled="true" />
</method>
</configuration>
</component>

View File

@@ -2,13 +2,13 @@
<configuration default="false" name="Codegen Tests on Android" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="android-tests" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="ALTERNATIVE_JRE_PATH" value="1.6" />
<option name="PACKAGE_NAME" value="org.jetbrains.kotlin.android.tests" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.kotlin.android.tests.AndroidRunner" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="class" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx512m -XX:MaxPermSize=320m -XX:+UseCodeCacheFlushing" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx850m -XX:+UseCodeCacheFlushing -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />

View File

@@ -0,0 +1,37 @@
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="Compiler Tests" type="JUnit" factoryName="JUnit">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="org.jetbrains.kotlin.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="compiler-tests" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="org.jetbrains.kotlin" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx900m -XX:MaxPermSize=320m -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=64m -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Profile " />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
</component>

View File

@@ -3,12 +3,12 @@
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="eval4j" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="org.jetbrains.eval4j.test" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="VM_PARAMETERS" value="-ea -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />

View File

@@ -2,7 +2,7 @@
<configuration default="false" name="IDEA" type="Application" factoryName="Application" singleton="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.intellij.idea.Main" />
<option name="VM_PARAMETERS" value="-Xmx800m -XX:ReservedCodeCacheSize=64m -XX:MaxPermSize=450m -XX:+HeapDumpOnOutOfMemoryError -ea -Didea.is.internal=true -Didea.debug.mode=true -Didea.system.path=../system-idea -Didea.config.path=../config-idea -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.io.useCanonCaches=false -Dplugin.path=$PROJECT_DIR$/out/artifacts/Kotlin -Dkotlin.internal.mode.enabled=true -Didea.additional.classpath=../idea-kotlin-runtime/kotlin-runtime.jar,../idea-kotlin-runtime/kotlin-reflect.jar" />
<option name="VM_PARAMETERS" value="-Xmx1250m -XX:ReservedCodeCacheSize=64m -XX:+HeapDumpOnOutOfMemoryError -ea -Didea.is.internal=true -Didea.debug.mode=true -Didea.system.path=../system-idea -Didea.config.path=../config-idea -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.io.useCanonCaches=false -Dplugin.path=$PROJECT_DIR$/out/artifacts/Kotlin -Dkotlin.internal.mode.enabled=true -Didea.additional.classpath=../idea-kotlin-runtime/kotlin-runtime.jar,../idea-kotlin-runtime/kotlin-reflect.jar" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/ideaSDK/bin" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
@@ -43,9 +43,7 @@
<option name="BuildArtifacts" enabled="true">
<artifact name="KotlinPlugin" />
</option>
<option name="BuildArtifacts" enabled="true">
<artifact name="KotlinAndroidExtensions" />
</option>
<option name="BuildArtifacts" enabled="true" />
<option name="AntTarget" enabled="true" antfile="file://$PROJECT_DIR$/idea-runner/runner.xml" target="force-enable-kotlin-plugin" />
</method>
</configuration>

View File

@@ -2,7 +2,7 @@
<configuration default="false" name="IDEA (No ProcessCanceledException)" type="Application" factoryName="Application" singleton="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.intellij.idea.Main" />
<option name="VM_PARAMETERS" value="-Xmx800m -XX:ReservedCodeCacheSize=64m -XX:MaxPermSize=250m -XX:+HeapDumpOnOutOfMemoryError -ea -Didea.is.internal=true -Didea.debug.mode=true -Didea.system.path=../system-idea -Didea.config.path=../config-idea -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.io.useCanonCaches=false -Dplugin.path=$PROJECT_DIR$/out/artifacts/Kotlin -Didea.ProcessCanceledException=disabled -Dkotlin.internal.mode.enabled=true -Didea.additional.classpath=../idea-kotlin-runtime/kotlin-runtime.jar,../idea-kotlin-runtime/kotlin-reflect.jar" />
<option name="VM_PARAMETERS" value="-Xmx1250m -XX:ReservedCodeCacheSize=64m -XX:+HeapDumpOnOutOfMemoryError -ea -Didea.is.internal=true -Didea.debug.mode=true -Didea.system.path=../system-idea -Didea.config.path=../config-idea -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.io.useCanonCaches=false -Dplugin.path=$PROJECT_DIR$/out/artifacts/Kotlin -Didea.ProcessCanceledException=disabled -Dkotlin.internal.mode.enabled=true -Didea.additional.classpath=../idea-kotlin-runtime/kotlin-runtime.jar,../idea-kotlin-runtime/kotlin-reflect.jar" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/ideaSDK/bin" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
@@ -24,9 +24,7 @@
<option name="BuildArtifacts" enabled="true">
<artifact name="KotlinPlugin" />
</option>
<option name="BuildArtifacts" enabled="true">
<artifact name="KotlinAndroidExtensions" />
</option>
<option name="BuildArtifacts" enabled="true" />
<option name="AntTarget" enabled="true" antfile="file://$PROJECT_DIR$/idea-runner/runner.xml" target="force-enable-kotlin-plugin" />
</method>
</configuration>

View File

@@ -1,26 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<component name="ProjectRunConfigurationManager">
<configuration default="false" name="IDEA (win)" type="Application" factoryName="Application">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.intellij.idea.Main" />
<option name="VM_PARAMETERS" value="-Xmx800m -XX:ReservedCodeCacheSize=64m -XX:MaxPermSize=450m -XX:+HeapDumpOnOutOfMemoryError -ea -Didea.is.internal=true -Didea.debug.mode=true -Didea.system.path=../system-idea -Didea.config.path=../config-idea -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.io.useCanonCaches=false -Dplugin.path=$PROJECT_DIR$/out/artifacts/Kotlin -Dkotlin.internal.mode.enabled=true -Didea.additional.classpath=${JAVA_HOME}\lib\tools.jar,../idea-kotlin-runtime/kotlin-runtime.jar,../idea-kotlin-runtime/kotlin-reflect.jar" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/ideaSDK/bin" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="ALTERNATIVE_JRE_PATH" value="1.7" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<module name="idea-runner" />
<envs />
<method>
<option name="BuildArtifacts" enabled="true">
<artifact name="KotlinPlugin" />
</option>
<option name="BuildArtifacts" enabled="true">
<artifact name="KotlinAndroidExtensions" />
</option>
<option name="AntTarget" enabled="true" antfile="file://$PROJECT_DIR$/idea-runner/runner.xml" target="force-enable-kotlin-plugin" />
</method>
</configuration>
</component>

View File

@@ -8,21 +8,24 @@
</extension>
<module name="j2k" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx350m -XX:MaxPermSize=320m" />
<option name="TEST_OBJECT" value="pattern" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx700m -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<patterns />
<patterns>
<pattern testClass="org.jetbrains.kotlin.idea.conversion.copy.*" />
<pattern testClass="org.jetbrains.kotlin.j2k.*" />
</patterns>
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />

View File

@@ -6,14 +6,14 @@
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="java8-tests" />
<module name="compiler-tests-java8" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
<option name="ALTERNATIVE_JRE_PATH" value="1.8" />
<option name="PACKAGE_NAME" value="org.jetbrains.kotlin" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=64m" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -XX:+UseCodeCacheFlushing -XX:ReservedCodeCacheSize=64m -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />

View File

@@ -3,12 +3,12 @@
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="js.tests" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="org.jetbrains.kotlin.js.test" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx900m -XX:MaxPermSize=320m -XX:+UseCodeCacheFlushing" />
<option name="VM_PARAMETERS" value="-ea -XX:+HeapDumpOnOutOfMemoryError -Xmx1250m -XX:+UseCodeCacheFlushing -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />

View File

@@ -3,12 +3,12 @@
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="kannotator-jps-plugin-test" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="org.jetbrains.kotlin.jps.build.kannotator" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="VM_PARAMETERS" value="-ea -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />

View File

@@ -8,12 +8,12 @@
</extension>
<module name="idea" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="org.jetbrains.kotlin.completion.handlers" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="pattern" />
<option name="VM_PARAMETERS" value="-ea -Xmx512m -XX:MaxPermSize=320m" />
<option name="VM_PARAMETERS" value="-ea -Xmx850m -Djna.nosys=true" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />

View File

@@ -2,11 +2,11 @@
<configuration default="false" name="Update-Dist-Run" type="Application" factoryName="Application" singleton="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<option name="MAIN_CLASS_NAME" value="com.intellij.idea.Main" />
<option name="VM_PARAMETERS" value="-Xmx800m -XX:ReservedCodeCacheSize=64m -XX:MaxPermSize=450m -XX:+HeapDumpOnOutOfMemoryError -ea -Didea.is.internal=true -Didea.debug.mode=true -Didea.system.path=../system-idea -Didea.config.path=../config-idea -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.io.useCanonCaches=false -Dplugin.path=$PROJECT_DIR$/out/artifacts/Kotlin -Dkotlin.internal.mode.enabled=true -Didea.additional.classpath=../idea-kotlin-runtime/kotlin-runtime.jar,../idea-kotlin-runtime/kotlin-reflect.jar" />
<option name="VM_PARAMETERS" value="-Xmx1250m -XX:ReservedCodeCacheSize=64m -XX:+HeapDumpOnOutOfMemoryError -ea -Didea.is.internal=true -Didea.debug.mode=true -Didea.system.path=../system-idea -Didea.config.path=../config-idea -Dapple.laf.useScreenMenuBar=true -Dapple.awt.graphics.UseQuartz=true -Dsun.io.useCanonCaches=false -Dplugin.path=$PROJECT_DIR$/out/artifacts/Kotlin -Dkotlin.internal.mode.enabled=true -Didea.additional.classpath=../idea-kotlin-runtime/kotlin-runtime.jar,../idea-kotlin-runtime/kotlin-reflect.jar" />
<option name="PROGRAM_PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/ideaSDK/bin" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="ENABLE_SWING_INSPECTOR" value="false" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
@@ -22,9 +22,7 @@
<option name="BuildArtifacts" enabled="true">
<artifact name="KotlinPlugin" />
</option>
<option name="BuildArtifacts" enabled="true">
<artifact name="KotlinAndroidExtensions" />
</option>
<option name="BuildArtifacts" enabled="true" />
<option name="AntTarget" enabled="true" antfile="file://$PROJECT_DIR$/idea_runner/runner.xml" target="force_enable_kotlin_plugin" />
</method>
</configuration>

2
.idea/scopes/IDE.xml generated
View File

@@ -1,3 +1,3 @@
<component name="DependencyValidationManager">
<scope name="IDE" pattern="file[idea]:*/||file[idea-analysis]:*/||file[ide-lazy-resolve]:*/" />
<scope name="IDE" pattern="file[idea]:src/*/||file[idea]:testData/*/||file[ide-common]:src/*/||file[idea-analysis]:src/*/||file[idea-android]:src/*/||file[idea-completion]:src/*/||file[idea-completion]:testData/*/||file[idea-core]:src/*/||file[idea-jps-common]:/*/||file[idea-live-templates]:/*/||file[idea-live-templates]:testData/*/||file[idea-repl]:/*/||src[idea-android-output-parser]:*..*" />
</component>

1059
ChangeLog.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,4 @@
<a href="http://kotlinslackin.herokuapp.com"><img src="https://kotlinslackin.herokuapp.com/badge.svg" height="20"></a>
[![TeamCity (simple build status)](https://img.shields.io/teamcity/http/teamcity.jetbrains.com/s/bt345.svg)](https://teamcity.jetbrains.com/viewType.html?buildTypeId=bt345&branch_Kotlin=%3Cdefault%3E&tab=buildTypeStatusDiv)
[![Maven Central](https://img.shields.io/maven-central/v/org.jetbrains.kotlin/kotlin-maven-plugin.svg)](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.jetbrains.kotlin%22)
[![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0)
@@ -19,13 +20,26 @@ Welcome to [Kotlin](http://kotlinlang.org/)! Some handy links:
## Editing Kotlin
* [Kotlin IntelliJ IDEA Plugin](http://hadihariri.com/2012/02/17/the-kotlin-journey-part-i-getting-things-set-up/)
* [Kotlin IntelliJ IDEA Plugin](https://kotlinlang.org/docs/tutorials/getting-started.html)
* [Kotlin Eclipse Plugin](http://kotlinlang.org/docs/tutorials/getting-started-eclipse.html)
* [Kotlin TextMate Bundle](https://github.com/k33g/kotlin-textmate-bundle#readme)
* [Kotlin TextMate Bundle](https://github.com/vkostyukov/kotlin-sublime-package)
## Build environment requirements
In order to build Kotlin distribution you need to have:
- Apache Ant 1.8 and higher
- JDK 1.6, 1.7 and 1.8
- Setup environment variables as following:
JAVA_HOME="path to JDK 1.6"
JDK_16="path to JDK 1.6"
JDK_17="path to JDK 1.7"
JDK_18="path to JDK 1.8"
## Building
To build this project, first time you try to build you need to run this (requires Apache **Ant 1.8** or higher and **JDK 1.6**):
To build this project, first time you try to build you need to run this:
ant -f update_dependencies.xml
@@ -45,7 +59,7 @@ which will build the binaries of the compiler and put them into the 'dist' direc
mvn package
from 'libraries' directory after building the compiler. Refer to `libraries/ReadMe.md` for details.
from 'libraries' directory after building the compiler. Refer to [libraries/ReadMe.md](libraries/ReadMe.md) for details.
## Working with the project in IntelliJ IDEA
@@ -106,7 +120,7 @@ We love contributions! There's [lots to do on Kotlin](http://youtrack.jetbrains.
about what you're interested in doing? Please join the #kontributors channel in [our Slack chat](http://kotlinslackin.herokuapp.com/)
and let us know about your plans.
If you want to find some issues to start off with, try [this query](https://youtrack.jetbrains.com/issues?q=tag%3A+%7BUp+For+Grabs%7D+%23Unresolved) which should find all issues that marked as "up-for-grabs".
If you want to find some issues to start off with, try [this query](https://youtrack.jetbrains.com/issues/KT?q=tag:%20%7BUp%20For%20Grabs%7D%20%23Unresolved) which should find all Kotlin issues that marked as "up-for-grabs".
Currently only committers can assign issues to themselves so just add a comment if you're starting work on it.
@@ -114,9 +128,9 @@ A nice gentle way to contribute would be to review the [standard library docs](h
and find classes or functions which are not documented very well and submit a patch.
In particular it'd be great if all functions included a nice example of how to use it such as for the
<a href="http://kotlinlang.org/api/latest/jvm/stdlib/kotlin/hash-map-of.html">hashMapOf()</a> function.
This is implemented using the <a href=https://github.com/JetBrains/kotlin/blob/master/libraries/stdlib/src/kotlin/collections/Maps.kt#L53">@sample</a>
macro to include code from a test function. This serves as a double win; the API gets better documented with nice examples to help new users and the code gets more test coverage.
[`hashMapOf()`](http://kotlinlang.org/api/latest/jvm/stdlib/kotlin/hash-map-of.html) function.
This is implemented using the [`@sample`](https://github.com/JetBrains/kotlin/blob/master/libraries/stdlib/src/kotlin/collections/Maps.kt#L64)
macro to include code from a test function. The benefits of this approach are twofold; First, the API's documentation is improved via beneficial examples that help new users and second, the code coverage is increased.
Also the [JavaScript translation](https://github.com/JetBrains/kotlin/blob/master/js/ReadMe.md) could really use your help. See the [JavaScript contribution section](https://github.com/JetBrains/kotlin/blob/master/js/ReadMe.md) for more details.

View File

@@ -1,6 +1,5 @@
<project name="Kotlin CI Steps" default="none">
<import file="build.xml" optional="false"/>
<import file="replicate_versions.xml" optional="false"/>
<property name="build.number" value="snapshot"/>
<property name="jdk16.home" value="${java.home}"/>
@@ -13,17 +12,15 @@
<property name="plugin.xml.bk" value="${version_substitute_dir}/plugin.xml.bk"/>
<property name="plugin.xml.versioned" value="${plugin.xml}.versioned"/>
<property name="android-extensions.plugin.xml" value="plugins/android-idea-plugin/src/META-INF/plugin.xml"/>
<property name="android-extensions.plugin.xml.bk" value="${version_substitute_dir}/kotlin-android-extensions.plugin.xml.bk"/>
<property name="android-extensions.plugin.xml.versioned" value="${android-extensions.plugin.xml}.versioned"/>
<property name="compiler.version.java" value="compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/KotlinVersion.java"/>
<property name="compiler.version.java.bk" value="${version_substitute_dir}/KotlinVersion.java.bk"/>
<property name="compiler.version.java.versioned" value="${compiler.version.java}.versioned"/>
<property name="plugin.zip" value="${artifact.output.path}/kotlin-plugin-${build.number}.zip"/>
<property name="bare.plugin.zip" value="${artifact.output.path}/kotlin-bare-plugin-${build.number}.zip"/>
<property name="android-extensions.zip" value="${artifact.output.path}/kotlin-android-extensions-plugin-${build.number}.zip"/>
<property name="kotlin.bare.plugin.xml" value="jps-plugin/bare-plugin/src/META-INF/plugin.xml"/>
<property name="kotlin.bare.plugin.xml.bk" value="${version_substitute_dir}/kotlin.bare.plugin.xml.bk"/>
<macrodef name="echoprop">
<attribute name="prop"/>
@@ -87,25 +84,23 @@
target.file.versioned="${plugin.xml.versioned}"
test.string="&lt;version&gt;@snapshot@&lt;/version&gt;"/>
<substituteVersionInFile
target.file="${android-extensions.plugin.xml}"
target.file.bk="${android-extensions.plugin.xml.bk}"
target.file.versioned="${android-extensions.plugin.xml.versioned}"
test.string="&lt;version&gt;@snapshot@&lt;/version&gt;"/>
<substituteVersionInFile
target.file="${compiler.version.java}"
target.file.bk="${compiler.version.java.bk}"
target.file.versioned="${compiler.version.java.versioned}"
test.string="public static final String VERSION = &quot;@snapshot@&quot;;"/>
<replicateIdeaVersion target.file="${android-extensions.plugin.xml}"/>
</target>
<substituteVersionInFile
target.file="${kotlin.bare.plugin.xml}"
target.file.bk="${kotlin.bare.plugin.xml.bk}"
test.string="&lt;version&gt;@snapshot@&lt;/version&gt;"/>
</target>
<target name="revertTemplateFiles">
<copy file="${plugin.xml.bk}" tofile="${plugin.xml}" overwrite="true"/>
<copy file="${android-extensions.plugin.xml.bk}" tofile="${android-extensions.plugin.xml}" overwrite="true"/>
<copy file="${compiler.version.java.bk}" tofile="${compiler.version.java}" overwrite="true"/>
<copy file="${kotlin.bare.plugin.xml.bk}" tofile="${kotlin.bare.plugin.xml}" overwrite="true"/>
<delete dir="${version_substitute_dir}" quiet="true"/>
</target>
@@ -131,11 +126,6 @@
<zipPlugin filename="${plugin.zip}" dir="Kotlin"/>
<zipPlugin filename="${bare.plugin.zip}" dir="BareKotlin"/>
<zip destfile="${android-extensions.zip}">
<zipfileset prefix="KotlinAndroidExtensions" dir="${artifact.output.path}/KotlinAndroidExtensions"/>
</zip>
<delete dir="${artifact.output.path}/KotlinAndroidExtensions" quiet="true"/>
</target>
<macrodef name="print-statistic">
@@ -163,11 +153,11 @@
<print-file-size-statistic path="${kotlin-home}/lib" file-name="kotlin-reflect.jar"/>
<print-file-size-statistic path="${kotlin-home}/lib" file-name="kotlin-jslib.jar"/>
<print-file-size-statistic path="${output}" file-name="kotlin.js"/>
<print-file-size-statistic path="${output}" file-name="builtins.js"/>
<print-file-size-statistic path="${output}" file-name="builtins.meta.js"/>
<print-file-size-statistic path="${output}" file-name="stdlib.js"/>
<print-file-size-statistic path="${output}" file-name="stdlib.meta.js"/>
<print-file-size-statistic path="${js.stdlib.output.dir}" file-name="kotlin.js"/>
<print-file-size-statistic path="${js.stdlib.output.dir}" file-name="builtins.js"/>
<print-file-size-statistic path="${js.stdlib.output.dir}" file-name="builtins.meta.js"/>
<print-file-size-statistic path="${js.stdlib.output.dir}" file-name="stdlib.js"/>
<print-file-size-statistic path="${js.stdlib.output.dir}" file-name="stdlib.meta.js"/>
</target>
<target name="post_build" depends="zipArtifacts, revertTemplateFiles, printStatistics, remove_internal_artifacts, dont_remove_internal_artifacts"/>

99
TeamCityRelay.xml Normal file
View File

@@ -0,0 +1,99 @@
<project name="Change plugins version" default="change-version">
<property name="relay.origin.version" value="1.0.0-beta-2423"/>
<property name="relay.substitute.version" value="1.0.0-beta-2423-IJ-141-3"/>
<property name="relay.plugins.dir" value="artifacts"/>
<property name="relay.unpack.directory" value="relay-dir"/>
<macrodef name="substituteRegexpInFile">
<attribute name="src.file"/>
<attribute name="output.dir"/>
<attribute name="origin.version"/>
<attribute name="substituted.version"/>
<sequential>
<copy todir="@{output.dir}">
<fileset file="@{src.file}"/>
<filterchain>
<replaceregex pattern="@{origin.version}" replace="@{substituted.version}" />
</filterchain>
</copy>
</sequential>
</macrodef>
<macrodef name="substitudeVersionInPlugin">
<attribute name="plugin.path"/>
<attribute name="plugin.jar.name"/>
<attribute name="origin.version"/>
<attribute name="substituted.version"/>
<attribute name="plugin.subdir"/>
<attribute name="output-dir" default="@{substituted.version}"/>
<attribute name="output.plugin.file.name" default="@{plugin.jar.name}-@{substituted.version}.zip"/>
<attribute name="temp.origin.dir" default="${relay.unpack.directory}/@{plugin.jar.name}/plugin-origin"/>
<attribute name="temp.substitute.dir" default="${relay.unpack.directory}/@{plugin.jar.name}/substitute"/>
<sequential>
<delete dir="${relay.unpack.directory}/@{plugin.jar.name}"/>
<mkdir dir="${relay.unpack.directory}/@{plugin.jar.name}"/>
<unzip src="@{plugin.path}" dest="@{temp.origin.dir}">
<patternset>
<include name="**/lib/@{plugin.jar.name}.jar" />
</patternset>
<flattenmapper/>
</unzip>
<unzip src="@{temp.origin.dir}/@{plugin.jar.name}.jar" dest="@{temp.origin.dir}">
<patternset>
<include name="**/META-INF/plugin.xml" />
</patternset>
<flattenmapper/>
</unzip>
<substituteRegexpInFile
src.file="@{temp.origin.dir}/plugin.xml" output.dir="@{temp.substitute.dir}"
origin.version="@{origin.version}" substituted.version="@{substituted.version}"/>
<!-- Copy updated file back into jar -->
<copy file="@{temp.origin.dir}/@{plugin.jar.name}.jar" todir="@{temp.substitute.dir}"/>
<jar destfile="@{temp.substitute.dir}/@{plugin.jar.name}.jar" update="true">
<zipfileset file="@{temp.substitute.dir}/plugin.xml" prefix="META-INF"/>
</jar>
<!-- Pack updated plugin.jar back to zip file -->
<copy file="@{plugin.path}" tofile="@{substituted.version}/@{output.plugin.file.name}"/>
<zip destfile="@{substituted.version}/@{output.plugin.file.name}" update="true">
<zipfileset file="@{temp.substitute.dir}/@{plugin.jar.name}.jar" prefix="@{plugin.subdir}/lib"/>
</zip>
</sequential>
</macrodef>
<target name="change-version" description="Repack plugin with other version">
<delete dir="${relay.unpack.directory}"/>
<delete dir="${relay.substitute.version}"/>
<mkdir dir="${relay.unpack.directory}"/>
<mkdir dir="${relay.substitute.version}"/>
<substitudeVersionInPlugin
plugin.jar.name="kotlin-plugin"
plugin.path="${relay.plugins.dir}/kotlin-plugin-${relay.origin.version}.zip"
origin.version="${relay.origin.version}"
plugin.subdir="Kotlin"
substituted.version="${relay.substitute.version}"/>
<substitudeVersionInPlugin
plugin.jar.name="kotlin-bare-plugin"
plugin.path="${relay.plugins.dir}/kotlin-bare-plugin-${relay.origin.version}.zip"
origin.version="${relay.origin.version}"
plugin.subdir="BareKotlin"
substituted.version="${relay.substitute.version}"/>
<substitudeVersionInPlugin
plugin.jar.name="kotlin-android-extensions"
plugin.path="${relay.plugins.dir}/kotlin-android-extensions-plugin-${relay.origin.version}.zip"
origin.version="${relay.origin.version}"
plugin.subdir="KotlinAndroidExtensions"
substituted.version="${relay.substitute.version}"/>
</target>
</project>

View File

@@ -3,10 +3,9 @@
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="1.8" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="RUNTIME" name="android-studio" level="project" />
<orderEntry type="module" module-name="idea" scope="PROVIDED" />
</component>
</module>
</module>

View File

@@ -9,6 +9,7 @@
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" name="ant" level="project" />
<orderEntry type="library" name="kotlin-runtime" level="project" />
<orderEntry type="library" name="kotlin-reflect" level="project" />
<orderEntry type="module" module-name="preloader" />
</component>
</module>

View File

@@ -1,7 +0,0 @@
<!-- NOTE: this Antlib is deprecated. Use org/jetbrains/kotlin/ant/antlib.xml instead -->
<!-- TODO: delete this file -->
<antlib>
<taskdef name="kotlinc" classname="org.jetbrains.kotlin.ant.Kotlin2JvmTask"/>
<taskdef name="kotlin2js" classname="org.jetbrains.kotlin.ant.Kotlin2JsTask"/>
<typedef name="withKotlin" classname="org.jetbrains.kotlin.ant.KotlinCompilerAdapter"/>
</antlib>

View File

@@ -19,22 +19,23 @@ package org.jetbrains.kotlin.ant
import org.apache.tools.ant.types.Path
import java.io.File
public class Kotlin2JsTask : KotlinCompilerBaseTask() {
class Kotlin2JsTask : KotlinCompilerBaseTask() {
override val compilerFqName = "org.jetbrains.kotlin.cli.js.K2JSCompiler"
public var library: Path? = null
public var outputPrefix: File? = null
public var outputPostfix: File? = null
public var sourceMap: Boolean = false
public var metaInfo: Boolean = false
var library: Path? = null
var outputPrefix: File? = null
var outputPostfix: File? = null
var sourceMap: Boolean = false
var metaInfo: Boolean = false
var moduleKind: String = "plain"
/**
* {@link K2JsArgumentConstants.CALL} (default) if need generate a main function call (main function will be auto detected)
* {@link K2JsArgumentConstants.NO_CALL} otherwise.
*/
public var main: String? = null
var main: String? = null
public fun createLibrary(): Path {
fun createLibrary(): Path {
val libraryPath = library
if (libraryPath == null) {
val t = Path(getProject())
@@ -73,5 +74,7 @@ public class Kotlin2JsTask : KotlinCompilerBaseTask() {
if (noStdlib) args.add("-no-stdlib")
if (sourceMap) args.add("-source-map")
if (metaInfo) args.add("-meta-info")
args += listOf("-module-kind", moduleKind)
}
}

View File

@@ -20,15 +20,15 @@ import org.apache.tools.ant.types.Path
import org.apache.tools.ant.types.Reference
import java.io.File.pathSeparator
public class Kotlin2JvmTask : KotlinCompilerBaseTask() {
class Kotlin2JvmTask : KotlinCompilerBaseTask() {
override val compilerFqName = "org.jetbrains.kotlin.cli.jvm.K2JVMCompiler"
public var includeRuntime: Boolean = true
public var moduleName: String? = null
var includeRuntime: Boolean = true
var moduleName: String? = null
private var compileClasspath: Path? = null
public fun setClasspath(classpath: Path) {
fun setClasspath(classpath: Path) {
if (compileClasspath == null) {
compileClasspath = classpath
}
@@ -37,14 +37,14 @@ public class Kotlin2JvmTask : KotlinCompilerBaseTask() {
}
}
public fun setClasspathRef(ref: Reference) {
fun setClasspathRef(ref: Reference) {
if (compileClasspath == null) {
compileClasspath = Path(getProject())
}
compileClasspath!!.createPath().setRefid(ref)
compileClasspath!!.createPath().refid = ref
}
public fun addConfiguredClasspath(classpath: Path) {
fun addConfiguredClasspath(classpath: Path) {
setClasspath(classpath)
}

View File

@@ -29,12 +29,12 @@ object KotlinAntTaskUtil {
private val libPath: File by lazy {
// Find path of kotlin-ant.jar in the filesystem and find kotlin-compiler.jar in the same directory
val resourcePath = "/" + javaClass.getName().replace('.', '/') + ".class"
val resourcePath = "/" + javaClass.name.replace('.', '/') + ".class"
val jarConnection = javaClass.getResource(resourcePath).openConnection() as? JarURLConnection
?: throw UnsupportedOperationException("Kotlin compiler Ant task should be loaded from the JAR file")
val antTaskJarPath = File(jarConnection.getJarFileURL().toURI())
val antTaskJarPath = File(jarConnection.jarFileURL.toURI())
antTaskJarPath.getParentFile()
antTaskJarPath.parentFile
}
val compilerJar: File by lazy {
@@ -47,7 +47,7 @@ object KotlinAntTaskUtil {
private fun File.assertExists(): File {
if (!this.exists()) {
throw IllegalStateException("${getName()} is not found in the directory of Kotlin Ant task")
throw IllegalStateException("${name} is not found in the directory of Kotlin Ant task")
}
return this
}
@@ -68,5 +68,5 @@ object KotlinAntTaskUtil {
}
public val Task.defaultModuleName: String?
val Task.defaultModuleName: String?
get() = owningTarget?.name ?: project?.name

View File

@@ -70,7 +70,7 @@ class KotlinCompilerAdapter : Javac13() {
// Javac13#execute passes everything in compileList to javac, which doesn't recognize .kt files
val compileListForJavac = filterOutKotlinSources(compileList)
val hasKotlinFilesInSources = compileListForJavac.size() < compileList.size()
val hasKotlinFilesInSources = compileListForJavac.size < compileList.size
if (hasKotlinFilesInSources) {
kotlinc.execute()

View File

@@ -24,25 +24,25 @@ import org.apache.tools.ant.types.Reference
import java.io.File
import java.io.PrintStream
public abstract class KotlinCompilerBaseTask : Task() {
abstract class KotlinCompilerBaseTask : Task() {
protected abstract val compilerFqName: String
public val args: MutableList<String> = arrayListOf()
val args: MutableList<String> = arrayListOf()
public var src: Path? = null
public var output: File? = null
public var nowarn: Boolean = false
public var verbose: Boolean = false
public var printVersion: Boolean = false
public var failOnError: Boolean = true
var src: Path? = null
var output: File? = null
var nowarn: Boolean = false
var verbose: Boolean = false
var printVersion: Boolean = false
var failOnError: Boolean = true
public var noStdlib: Boolean = false
var noStdlib: Boolean = false
public val additionalArguments: MutableList<Commandline.Argument> = arrayListOf()
val additionalArguments: MutableList<Commandline.Argument> = arrayListOf()
public var exitCode: Int? = null
var exitCode: Int? = null
public fun createSrc(): Path {
fun createSrc(): Path {
val srcPath = src
if (srcPath == null) {
val t = Path(getProject())
@@ -53,11 +53,11 @@ public abstract class KotlinCompilerBaseTask : Task() {
return srcPath.createPath()
}
public fun setSrcRef(ref: Reference) {
createSrc().setRefid(ref)
fun setSrcRef(ref: Reference) {
createSrc().refid = ref
}
public fun createCompilerArg(): Commandline.Argument {
fun createCompilerArg(): Commandline.Argument {
val argument = Commandline.Argument()
additionalArguments.add(argument)
return argument
@@ -65,7 +65,7 @@ public abstract class KotlinCompilerBaseTask : Task() {
abstract fun fillSpecificArguments()
public fun fillArguments() {
fun fillArguments() {
val sourcePaths = src ?: throw BuildException("\"src\" should be specified")
args.addAll(sourcePaths.list().map { File(it).canonicalPath })
@@ -75,7 +75,7 @@ public abstract class KotlinCompilerBaseTask : Task() {
if (verbose) args.add("-verbose")
if (printVersion) args.add("-version")
args.addAll(additionalArguments.flatMap { it.getParts().toList() })
args.addAll(additionalArguments.flatMap { it.parts.toList() })
fillSpecificArguments()
}
@@ -85,12 +85,12 @@ public abstract class KotlinCompilerBaseTask : Task() {
val compilerClass = KotlinAntTaskUtil.getOrCreateClassLoader().loadClass(compilerFqName)
val compiler = compilerClass.newInstance()
val exec = compilerClass.getMethod("execFullPathsInMessages", javaClass<PrintStream>(), javaClass<Array<String>>())
val exec = compilerClass.getMethod("execFullPathsInMessages", PrintStream::class.java, Array<String>::class.java)
log("Compiling ${src!!.list().toList()} => [${output!!.canonicalPath}]");
log("Compiling ${src!!.list().toList()} => [${output!!.canonicalPath}]")
val result = exec(compiler, System.err, args.toTypedArray())
exitCode = (result as Enum<*>).ordinal()
exitCode = (result as Enum<*>).ordinal
if (failOnError && exitCode != 0) {
throw BuildException("Compile failed; see the compiler error output for details.")

View File

@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="frontend.java" />
<orderEntry type="module" module-name="util.runtime" />
<orderEntry type="module" module-name="cli-common" />
<orderEntry type="module" module-name="util" />
<orderEntry type="module" module-name="tests-common" scope="TEST" />
<orderEntry type="library" scope="TEST" name="idea-full" level="project" />
</component>
</module>

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.jetbrains.kotlin.jps.build
package org.jetbrains.kotlin.build
import java.io.File

View File

@@ -0,0 +1,40 @@
/*
* Copyright 2010-2015 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.kotlin.build
import org.jetbrains.kotlin.incremental.LocalFileKotlinClass
import org.jetbrains.kotlin.load.kotlin.ModuleMapping
import org.jetbrains.kotlin.utils.sure
import java.io.File
open class GeneratedFile<Target>(
val target: Target,
val sourceFiles: Collection<File>,
val outputFile: File
)
class GeneratedJvmClass<Target> (
target: Target,
sourceFiles: Collection<File>,
outputFile: File
) : GeneratedFile<Target>(target, sourceFiles, outputFile) {
val outputClass = LocalFileKotlinClass.create(outputFile).sure {
"Couldn't load KotlinClass from $outputFile; it may happen because class doesn't have valid Kotlin annotations"
}
}
fun File.isModuleMappingFile() = extension == ModuleMapping.MAPPING_FILE_EXT && parentFile.name == "META-INF"

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
* Copyright 2010-2016 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

@@ -0,0 +1,114 @@
/*
* Copyright 2010-2015 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.kotlin.incremental
import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.config.IncrementalCompilation
import org.jetbrains.kotlin.load.java.JvmBytecodeBinaryVersion
import org.jetbrains.kotlin.load.kotlin.JvmMetadataVersion
import java.io.File
private val NORMAL_VERSION = 8
private val EXPERIMENTAL_VERSION = 3
private val DATA_CONTAINER_VERSION = 1
private val NORMAL_VERSION_FILE_NAME = "format-version.txt"
private val EXPERIMENTAL_VERSION_FILE_NAME = "experimental-format-version.txt"
private val DATA_CONTAINER_VERSION_FILE_NAME = "data-container-format-version.txt"
class CacheVersion(
private val ownVersion: Int,
private val versionFile: File,
private val whenVersionChanged: CacheVersion.Action,
private val whenTurnedOn: CacheVersion.Action,
private val whenTurnedOff: CacheVersion.Action,
isEnabled: ()->Boolean
) {
private val isEnabled by lazy(isEnabled)
private val actualVersion: Int
get() = versionFile.readText().toInt()
private val expectedVersion: Int
get() {
val metadata = JvmMetadataVersion.INSTANCE
val bytecode = JvmBytecodeBinaryVersion.INSTANCE
return ownVersion * 1000000 +
bytecode.major * 10000 + bytecode.minor * 100 +
metadata.major * 1000 + metadata.minor
}
fun checkVersion(): Action =
when (versionFile.exists() to isEnabled) {
true to true -> if (actualVersion != expectedVersion) whenVersionChanged else Action.DO_NOTHING
false to true -> whenTurnedOn
true to false -> whenTurnedOff
else -> Action.DO_NOTHING
}
fun saveIfNeeded() {
if (!isEnabled) return
if (!versionFile.parentFile.exists()) {
versionFile.parentFile.mkdirs()
}
versionFile.writeText(expectedVersion.toString())
}
fun clean() {
versionFile.delete()
}
@get:TestOnly
val formatVersionFile: File
get() = versionFile
// Order of entries is important, because actions are sorted in KotlinBuilder::checkVersions
enum class Action {
REBUILD_ALL_KOTLIN,
REBUILD_CHUNK,
CLEAN_NORMAL_CACHES,
CLEAN_EXPERIMENTAL_CACHES,
CLEAN_DATA_CONTAINER,
DO_NOTHING
}
}
fun normalCacheVersion(dataRoot: File): CacheVersion =
CacheVersion(ownVersion = NORMAL_VERSION,
versionFile = File(dataRoot, NORMAL_VERSION_FILE_NAME),
whenVersionChanged = CacheVersion.Action.REBUILD_CHUNK,
whenTurnedOn = CacheVersion.Action.REBUILD_CHUNK,
whenTurnedOff = CacheVersion.Action.CLEAN_NORMAL_CACHES,
isEnabled = { IncrementalCompilation.isEnabled() })
fun experimentalCacheVersion(dataRoot: File): CacheVersion =
CacheVersion(ownVersion = EXPERIMENTAL_VERSION,
versionFile = File(dataRoot, EXPERIMENTAL_VERSION_FILE_NAME),
whenVersionChanged = CacheVersion.Action.REBUILD_CHUNK,
whenTurnedOn = CacheVersion.Action.REBUILD_CHUNK,
whenTurnedOff = CacheVersion.Action.CLEAN_EXPERIMENTAL_CACHES,
isEnabled = { IncrementalCompilation.isExperimental() })
fun dataContainerCacheVersion(dataRoot: File): CacheVersion =
CacheVersion(ownVersion = DATA_CONTAINER_VERSION,
versionFile = File(dataRoot, DATA_CONTAINER_VERSION_FILE_NAME),
whenVersionChanged = CacheVersion.Action.REBUILD_ALL_KOTLIN,
whenTurnedOn = CacheVersion.Action.REBUILD_ALL_KOTLIN,
whenTurnedOff = CacheVersion.Action.CLEAN_DATA_CONTAINER,
isEnabled = { IncrementalCompilation.isExperimental() })

View File

@@ -0,0 +1,799 @@
/*
* Copyright 2010-2016 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.kotlin.incremental
import com.intellij.openapi.util.io.FileUtil.toSystemIndependentName
import com.intellij.util.SmartList
import com.intellij.util.io.BooleanDataDescriptor
import com.intellij.util.io.EnumeratorStringDescriptor
import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.build.GeneratedJvmClass
import org.jetbrains.kotlin.config.IncrementalCompilation
import org.jetbrains.kotlin.incremental.ChangeInfo.MembersChanged
import org.jetbrains.kotlin.incremental.ChangeInfo.Removed
import org.jetbrains.kotlin.incremental.storage.*
import org.jetbrains.kotlin.inline.inlineFunctionsJvmNames
import org.jetbrains.kotlin.load.kotlin.ModuleMapping
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
import org.jetbrains.kotlin.load.kotlin.incremental.components.JvmPackagePartProto
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.protobuf.MessageLite
import org.jetbrains.kotlin.resolve.jvm.JvmClassName
import org.jetbrains.kotlin.serialization.Flags
import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
import org.jetbrains.kotlin.serialization.deserialization.TypeTable
import org.jetbrains.kotlin.serialization.deserialization.supertypes
import org.jetbrains.kotlin.serialization.jvm.BitEncoding
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
import org.jetbrains.kotlin.utils.singletonOrEmptyList
import org.jetbrains.org.objectweb.asm.*
import java.io.File
import java.security.MessageDigest
import java.util.*
val KOTLIN_CACHE_DIRECTORY_NAME = "kotlin"
open class IncrementalCacheImpl<Target>(
private val targetDataRoot: File,
targetOutputDir: File?,
target: Target
) : BasicMapsOwner(), IncrementalCache {
companion object {
private val PROTO_MAP = "proto"
private val CONSTANTS_MAP = "constants"
private val PACKAGE_PARTS = "package-parts"
private val MULTIFILE_CLASS_FACADES = "multifile-class-facades"
private val MULTIFILE_CLASS_PARTS = "multifile-class-parts"
private val SOURCE_TO_CLASSES = "source-to-classes"
private val DIRTY_OUTPUT_CLASSES = "dirty-output-classes"
private val INLINE_FUNCTIONS = "inline-functions"
private val SUBTYPES = "subtypes"
private val SUPERTYPES = "supertypes"
private val CLASS_FQ_NAME_TO_SOURCE = "class-fq-name-to-source"
private val MODULE_MAPPING_FILE_NAME = "." + ModuleMapping.MAPPING_FILE_EXT
}
private val baseDir = File(targetDataRoot, KOTLIN_CACHE_DIRECTORY_NAME)
private val experimentalMaps = arrayListOf<BasicMap<*, *>>()
private fun <K, V, M : BasicMap<K, V>> registerExperimentalMap(map: M): M {
experimentalMaps.add(map)
return registerMap(map)
}
protected val String.storageFile: File
get() = File(baseDir, this + "." + CACHE_EXTENSION)
private val protoMap = registerMap(ProtoMap(PROTO_MAP.storageFile))
private val constantsMap = registerMap(ConstantsMap(CONSTANTS_MAP.storageFile))
private val packagePartMap = registerMap(PackagePartMap(PACKAGE_PARTS.storageFile))
private val multifileFacadeToParts = registerMap(MultifileClassFacadeMap(MULTIFILE_CLASS_FACADES.storageFile))
private val partToMultifileFacade = registerMap(MultifileClassPartMap(MULTIFILE_CLASS_PARTS.storageFile))
private val sourceToClassesMap = registerMap(SourceToClassesMap(SOURCE_TO_CLASSES.storageFile))
private val dirtyOutputClassesMap = registerMap(DirtyOutputClassesMap(DIRTY_OUTPUT_CLASSES.storageFile))
private val inlineFunctionsMap = registerMap(InlineFunctionsMap(INLINE_FUNCTIONS.storageFile))
private val subtypesMap = registerExperimentalMap(SubtypesMap(SUBTYPES.storageFile))
private val supertypesMap = registerExperimentalMap(SupertypesMap(SUPERTYPES.storageFile))
private val classFqNameToSourceMap = registerExperimentalMap(ClassFqNameToSourceMap(CLASS_FQ_NAME_TO_SOURCE.storageFile))
private val dependents = arrayListOf<IncrementalCacheImpl<Target>>()
private val outputDir by lazy(LazyThreadSafetyMode.NONE) { requireNotNull(targetOutputDir) { "Target is expected to have output directory: $target" } }
val thisWithDependentCaches: Iterable<IncrementalCacheImpl<Target>> by lazy {
val result = arrayListOf(this)
result.addAll(dependents)
result
}
override fun registerInline(fromPath: String, jvmSignature: String, toPath: String) {
}
protected open fun debugLog(message: String) {}
fun addDependentCache(cache: IncrementalCacheImpl<Target>) {
dependents.add(cache)
}
fun markOutputClassesDirty(removedAndCompiledSources: List<File>) {
for (sourceFile in removedAndCompiledSources) {
val classes = sourceToClassesMap[sourceFile]
classes.forEach {
dirtyOutputClassesMap.markDirty(it.internalName)
}
sourceToClassesMap.clearOutputsForSource(sourceFile)
}
}
// used in gradle
@Suppress("unused")
fun classesBySources(sources: Iterable<File>): Iterable<JvmClassName> =
sources.flatMap { sourceToClassesMap[it] }
fun getSubtypesOf(className: FqName): Sequence<FqName> =
subtypesMap[className].asSequence()
fun getSourceFileIfClass(fqName: FqName): File? = classFqNameToSourceMap[fqName]
fun isMultifileFacade(className: JvmClassName): Boolean =
className.internalName in multifileFacadeToParts
override fun getClassFilePath(internalClassName: String): String {
return toSystemIndependentName(File(outputDir, "$internalClassName.class").canonicalPath)
}
fun saveModuleMappingToCache(sourceFiles: Collection<File>, file: File): CompilationResult {
val jvmClassName = JvmClassName.byInternalName(MODULE_MAPPING_FILE_NAME)
protoMap.process(jvmClassName, file.readBytes(), emptyArray<String>(), isPackage = false, checkChangesIsOpenPart = false)
dirtyOutputClassesMap.notDirty(MODULE_MAPPING_FILE_NAME)
sourceFiles.forEach { sourceToClassesMap.add(it, jvmClassName) }
return CompilationResult.NO_CHANGES
}
open fun saveFileToCache(generatedClass: GeneratedJvmClass<Target>): CompilationResult {
val sourceFiles: Collection<File> = generatedClass.sourceFiles
val kotlinClass: LocalFileKotlinClass = generatedClass.outputClass
val className = kotlinClass.className
dirtyOutputClassesMap.notDirty(className.internalName)
sourceFiles.forEach {
sourceToClassesMap.add(it, className)
}
if (kotlinClass.classId.isLocal) {
return CompilationResult.NO_CHANGES
}
val header = kotlinClass.classHeader
val changesInfo = when (header.kind) {
KotlinClassHeader.Kind.FILE_FACADE -> {
assert(sourceFiles.size == 1) { "Package part from several source files: $sourceFiles" }
packagePartMap.addPackagePart(className)
protoMap.process(kotlinClass, isPackage = true) +
constantsMap.process(kotlinClass, isPackage = true) +
inlineFunctionsMap.process(kotlinClass, isPackage = true)
}
KotlinClassHeader.Kind.MULTIFILE_CLASS -> {
val partNames = kotlinClass.classHeader.data?.toList()
?: throw AssertionError("Multifile class has no parts: ${kotlinClass.className}")
multifileFacadeToParts[className] = partNames
// When a class is replaced with a facade with the same name,
// the class' proto wouldn't ever be deleted,
// because we don't write proto for multifile facades.
// As a workaround we can remove proto values for multifile facades.
protoMap.remove(className)
classFqNameToSourceMap.remove(className.fqNameForClassNameWithoutDollars)
// TODO NO_CHANGES? (delegates only)
constantsMap.process(kotlinClass, isPackage = true) +
inlineFunctionsMap.process(kotlinClass, isPackage = true)
}
KotlinClassHeader.Kind.MULTIFILE_CLASS_PART -> {
assert(sourceFiles.size == 1) { "Multifile class part from several source files: $sourceFiles" }
packagePartMap.addPackagePart(className)
partToMultifileFacade.set(className.internalName, header.multifileClassName!!)
protoMap.process(kotlinClass, isPackage = true) +
constantsMap.process(kotlinClass, isPackage = true) +
inlineFunctionsMap.process(kotlinClass, isPackage = true)
}
KotlinClassHeader.Kind.CLASS -> {
assert(sourceFiles.size == 1) { "Class is expected to have only one source file: $sourceFiles" }
addToClassStorage(kotlinClass, sourceFiles.first())
protoMap.process(kotlinClass, isPackage = false) +
constantsMap.process(kotlinClass, isPackage = false) +
inlineFunctionsMap.process(kotlinClass, isPackage = false)
}
else -> CompilationResult.NO_CHANGES
}
changesInfo.logIfSomethingChanged(className)
return changesInfo
}
private fun CompilationResult.logIfSomethingChanged(className: JvmClassName) {
if (this == CompilationResult.NO_CHANGES) return
debugLog("$className is changed: $this")
}
private fun computeChanges(className: JvmClassName, createChangeInfo: (FqName, Collection<String>) -> ChangeInfo): List<ChangeInfo> {
fun <T> T.getNonPrivateNames(nameResolver: NameResolver, vararg members: T.() -> List<MessageLite>): Set<String> =
members.flatMap { this.it().filterNot { it.isPrivate }.names(nameResolver) }.toSet()
if (className.internalName == MODULE_MAPPING_FILE_NAME) return emptyList()
val mapValue = protoMap[className] ?: return emptyList()
return when {
mapValue.isPackageFacade -> {
val packageData = JvmProtoBufUtil.readPackageDataFrom(mapValue.bytes, mapValue.strings)
val memberNames =
packageData.packageProto.getNonPrivateNames(
packageData.nameResolver,
ProtoBuf.Package::getFunctionList,
ProtoBuf.Package::getPropertyList
)
listOf(createChangeInfo(className.packageFqName, memberNames))
}
else -> {
val classData = JvmProtoBufUtil.readClassDataFrom(mapValue.bytes, mapValue.strings)
val classFqName = className.fqNameForClassNameWithoutDollars
val kind = Flags.CLASS_KIND.get(classData.classProto.flags)
if (kind == ProtoBuf.Class.Kind.COMPANION_OBJECT) {
val memberNames =
classData.classProto.getNonPrivateNames(
classData.nameResolver,
ProtoBuf.Class::getConstructorList,
ProtoBuf.Class::getFunctionList,
ProtoBuf.Class::getPropertyList
) + classData.classProto.enumEntryList.map { classData.nameResolver.getString(it.name) }
val companionObjectChanged = createChangeInfo(classFqName.parent(), classFqName.shortName().asString().singletonOrEmptyList())
val companionObjectMembersChanged = createChangeInfo(classFqName, memberNames)
listOf(companionObjectMembersChanged, companionObjectChanged)
}
else {
listOf(ChangeInfo.SignatureChanged(classFqName, areSubclassesAffected = true))
}
}
}
}
fun clearCacheForRemovedClasses(): CompilationResult {
val dirtyClasses = dirtyOutputClassesMap
.getDirtyOutputClasses()
.map(JvmClassName::byInternalName)
.toList()
val changes =
if (IncrementalCompilation.isExperimental())
dirtyClasses.flatMap { computeChanges(it, ::Removed) }.asSequence()
else
emptySequence<ChangeInfo>()
val changesInfo = dirtyClasses.fold(CompilationResult(changes = changes)) { info, className ->
val newInfo = CompilationResult(protoChanged = className in protoMap,
constantsChanged = className in constantsMap)
newInfo.logIfSomethingChanged(className)
info + newInfo
}
val facadesWithRemovedParts = hashMapOf<JvmClassName, MutableSet<String>>()
for (dirtyClass in dirtyClasses) {
val facade = partToMultifileFacade.get(dirtyClass.internalName) ?: continue
val facadeClassName = JvmClassName.byInternalName(facade)
val removedParts = facadesWithRemovedParts.getOrPut(facadeClassName) { hashSetOf() }
removedParts.add(dirtyClass.internalName)
}
for ((facade, removedParts) in facadesWithRemovedParts.entries) {
val allParts = multifileFacadeToParts[facade.internalName] ?: continue
val notRemovedParts = allParts.filter { it !in removedParts }
if (notRemovedParts.isEmpty()) {
multifileFacadeToParts.remove(facade)
}
else {
multifileFacadeToParts[facade] = notRemovedParts
}
}
dirtyClasses.forEach {
protoMap.remove(it)
packagePartMap.remove(it)
multifileFacadeToParts.remove(it)
partToMultifileFacade.remove(it)
constantsMap.remove(it)
inlineFunctionsMap.remove(it)
}
removeAllFromClassStorage(dirtyClasses)
dirtyOutputClassesMap.clean()
return changesInfo
}
override fun getObsoletePackageParts(): Collection<String> {
val obsoletePackageParts =
dirtyOutputClassesMap.getDirtyOutputClasses().filter { packagePartMap.isPackagePart(JvmClassName.byInternalName(it)) }
debugLog("Obsolete package parts: ${obsoletePackageParts}")
return obsoletePackageParts
}
override fun getPackagePartData(partInternalName: String): JvmPackagePartProto? {
return protoMap[JvmClassName.byInternalName(partInternalName)]?.let { value ->
JvmPackagePartProto(value.bytes, value.strings)
}
}
override fun getObsoleteMultifileClasses(): Collection<String> {
val obsoleteMultifileClasses = linkedSetOf<String>()
for (dirtyClass in dirtyOutputClassesMap.getDirtyOutputClasses()) {
val dirtyFacade = partToMultifileFacade.get(dirtyClass) ?: continue
obsoleteMultifileClasses.add(dirtyFacade)
}
debugLog("Obsolete multifile class facades: $obsoleteMultifileClasses")
return obsoleteMultifileClasses
}
override fun getStableMultifileFacadeParts(facadeInternalName: String): Collection<String>? {
val partNames = multifileFacadeToParts.get(facadeInternalName) ?: return null
return partNames.filter { !dirtyOutputClassesMap.isDirty(it) }
}
override fun getMultifileFacade(partInternalName: String): String? {
return partToMultifileFacade.get(partInternalName)
}
override fun getModuleMappingData(): ByteArray? {
return protoMap[JvmClassName.byInternalName(MODULE_MAPPING_FILE_NAME)]?.bytes
}
override fun clean() {
super.clean()
normalCacheVersion(targetDataRoot).clean()
experimentalCacheVersion(targetDataRoot).clean()
}
fun cleanExperimental() {
experimentalCacheVersion(targetDataRoot).clean()
experimentalMaps.forEach { it.clean() }
}
private inner class ProtoMap(storageFile: File) : BasicStringMap<ProtoMapValue>(storageFile, ProtoMapValueExternalizer) {
fun process(kotlinClass: LocalFileKotlinClass, isPackage: Boolean): CompilationResult {
val header = kotlinClass.classHeader
val bytes = BitEncoding.decodeBytes(header.data!!)
return put(kotlinClass.className, bytes, header.strings!!, isPackage, checkChangesIsOpenPart = true)
}
fun process(className: JvmClassName, data: ByteArray, strings: Array<String>, isPackage: Boolean, checkChangesIsOpenPart: Boolean): CompilationResult {
return put(className, data, strings, isPackage, checkChangesIsOpenPart)
}
private fun put(
className: JvmClassName, bytes: ByteArray, strings: Array<String>, isPackage: Boolean, checkChangesIsOpenPart: Boolean
): CompilationResult {
val key = className.internalName
val oldData = storage[key]
val data = ProtoMapValue(isPackage, bytes, strings)
if (oldData == null ||
!Arrays.equals(bytes, oldData.bytes) ||
!Arrays.equals(strings, oldData.strings) ||
isPackage != oldData.isPackageFacade
) {
storage[key] = data
}
if (!checkChangesIsOpenPart) return CompilationResult(protoChanged = true)
if (oldData == null) {
val changes =
if (IncrementalCompilation.isExperimental())
computeChanges(className, ::MembersChanged).asSequence()
else
emptySequence<ChangeInfo>()
return CompilationResult(protoChanged = true, changes = changes)
}
val difference = difference(oldData, data)
val fqName = if (isPackage) className.packageFqName else className.fqNameForClassNameWithoutDollars
val changeList = SmartList<ChangeInfo>()
if (difference.isClassAffected) {
changeList.add(ChangeInfo.SignatureChanged(fqName, difference.areSubclassesAffected))
}
if (difference.changedMembersNames.isNotEmpty()) {
changeList.add(ChangeInfo.MembersChanged(fqName, difference.changedMembersNames))
}
return CompilationResult(protoChanged = changeList.isNotEmpty(), changes = changeList.asSequence())
}
operator fun contains(className: JvmClassName): Boolean =
className.internalName in storage
operator fun get(className: JvmClassName): ProtoMapValue? =
storage[className.internalName]
fun remove(className: JvmClassName) {
storage.remove(className.internalName)
}
override fun dumpValue(value: ProtoMapValue): String {
return (if (value.isPackageFacade) "1" else "0") + java.lang.Long.toHexString(value.bytes.md5())
}
}
private inner class ConstantsMap(storageFile: File) : BasicStringMap<Map<String, Any>>(storageFile, ConstantsMapExternalizer) {
private fun getConstantsMap(bytes: ByteArray): Map<String, Any>? {
val result = HashMap<String, Any>()
ClassReader(bytes).accept(object : ClassVisitor(Opcodes.ASM5) {
override fun visitField(access: Int, name: String, desc: String, signature: String?, value: Any?): FieldVisitor? {
val staticFinal = Opcodes.ACC_STATIC or Opcodes.ACC_FINAL or Opcodes.ACC_PRIVATE
if (value != null && access and staticFinal == Opcodes.ACC_STATIC or Opcodes.ACC_FINAL) {
result[name] = value
}
return null
}
}, ClassReader.SKIP_CODE or ClassReader.SKIP_DEBUG or ClassReader.SKIP_FRAMES)
return if (result.isEmpty()) null else result
}
operator fun contains(className: JvmClassName): Boolean =
className.internalName in storage
fun process(kotlinClass: LocalFileKotlinClass, isPackage: Boolean): CompilationResult {
return put(kotlinClass.className, getConstantsMap(kotlinClass.fileContents), isPackage)
}
private fun put(className: JvmClassName, constantsMap: Map<String, Any>?, isPackage: Boolean): CompilationResult {
val key = className.internalName
val oldMap = storage[key]
if (oldMap == constantsMap) return CompilationResult.NO_CHANGES
if (constantsMap != null) {
storage[key] = constantsMap
}
else {
remove(className)
}
val changes =
if (!IncrementalCompilation.isExperimental() ||
constantsMap == null || constantsMap.isEmpty() ||
oldMap == null || oldMap.isEmpty()
) {
emptySequence<ChangeInfo>()
}
else {
// we need only changed constants everything other should be covered by diff
val changedNames = oldMap.filter { constantsMap.containsKey(it.key) && constantsMap[it.key] != it.value }.map { it.key }
val fqName = if (isPackage) className.packageFqName else className.fqNameForClassNameWithoutDollars
sequenceOf(ChangeInfo.MembersChanged(fqName, changedNames))
}
return CompilationResult(constantsChanged = true, changes = changes)
}
fun remove(className: JvmClassName) {
storage.remove(className.internalName)
}
override fun dumpValue(value: Map<String, Any>): String =
value.dumpMap(Any::toString)
}
private inner class PackagePartMap(storageFile: File) : BasicStringMap<Boolean>(storageFile, BooleanDataDescriptor.INSTANCE) {
fun addPackagePart(className: JvmClassName) {
storage[className.internalName] = true
}
fun remove(className: JvmClassName) {
storage.remove(className.internalName)
}
fun isPackagePart(className: JvmClassName): Boolean =
className.internalName in storage
override fun dumpValue(value: Boolean) = ""
}
private inner class MultifileClassFacadeMap(storageFile: File) : BasicStringMap<Collection<String>>(storageFile, StringCollectionExternalizer) {
operator fun set(facadeName: JvmClassName, partNames: Collection<String>) {
storage[facadeName.internalName] = partNames
}
operator fun get(internalName: String): Collection<String>? = storage[internalName]
operator fun contains(internalName: String): Boolean = internalName in storage
fun remove(className: JvmClassName) {
storage.remove(className.internalName)
}
override fun dumpValue(value: Collection<String>): String = value.dumpCollection()
}
private inner class MultifileClassPartMap(storageFile: File) : BasicStringMap<String>(storageFile, EnumeratorStringDescriptor.INSTANCE) {
fun set(partName: String, facadeName: String) {
storage[partName] = facadeName
}
fun get(partName: String): String? {
return storage.get(partName)
}
fun remove(className: JvmClassName) {
storage.remove(className.internalName)
}
override fun dumpValue(value: String): String = value
}
inner class SourceToClassesMap(storageFile: File) : BasicStringMap<Collection<String>>(storageFile, PathStringDescriptor, StringCollectionExternalizer) {
fun clearOutputsForSource(sourceFile: File) {
remove(sourceFile.absolutePath)
}
fun add(sourceFile: File, className: JvmClassName) {
storage.append(sourceFile.absolutePath, className.internalName)
}
operator fun get(sourceFile: File): Collection<JvmClassName> =
storage[sourceFile.absolutePath].orEmpty().map { JvmClassName.byInternalName(it) }
override fun dumpValue(value: Collection<String>) = value.dumpCollection()
private fun remove(path: String) {
storage.remove(path)
}
}
inner class ClassFqNameToSourceMap(storageFile: File) : BasicStringMap<String>(storageFile, EnumeratorStringDescriptor(), PathStringDescriptor) {
operator fun set(fqName: FqName, sourceFile: File) {
storage[fqName.asString()] = sourceFile.canonicalPath
}
operator fun get(fqName: FqName): File? =
storage[fqName.asString()]?.let(::File)
fun remove(fqName: FqName) {
storage.remove(fqName.asString())
}
override fun dumpValue(value: String) = value
}
private fun addToClassStorage(kotlinClass: LocalFileKotlinClass, srcFile: File) {
if (!IncrementalCompilation.isExperimental()) return
val classData = JvmProtoBufUtil.readClassDataFrom(kotlinClass.classHeader.data!!, kotlinClass.classHeader.strings!!)
val supertypes = classData.classProto.supertypes(TypeTable(classData.classProto.typeTable))
val parents = supertypes.map { classData.nameResolver.getClassId(it.className).asSingleFqName() }
.filter { it.asString() != "kotlin.Any" }
.toSet()
val child = kotlinClass.classId.asSingleFqName()
parents.forEach { subtypesMap.add(it, child) }
val removedSupertypes = supertypesMap[child].filter { it !in parents }
removedSupertypes.forEach { subtypesMap.removeValues(it, setOf(child)) }
supertypesMap[child] = parents
classFqNameToSourceMap[kotlinClass.className.fqNameForClassNameWithoutDollars] = srcFile
}
private fun removeAllFromClassStorage(removedClasses: Collection<JvmClassName>) {
if (!IncrementalCompilation.isExperimental() || removedClasses.isEmpty()) return
val removedFqNames = removedClasses.map { it.fqNameForClassNameWithoutDollars }.toSet()
for (cache in thisWithDependentCaches) {
val parentsFqNames = hashSetOf<FqName>()
val childrenFqNames = hashSetOf<FqName>()
for (removedFqName in removedFqNames) {
parentsFqNames.addAll(cache.supertypesMap[removedFqName])
childrenFqNames.addAll(cache.subtypesMap[removedFqName])
cache.supertypesMap.remove(removedFqName)
cache.subtypesMap.remove(removedFqName)
}
for (child in childrenFqNames) {
cache.supertypesMap.removeValues(child, removedFqNames)
}
for (parent in parentsFqNames) {
cache.subtypesMap.removeValues(parent, removedFqNames)
}
}
removedFqNames.forEach { classFqNameToSourceMap.remove(it) }
}
private inner class DirtyOutputClassesMap(storageFile: File) : BasicStringMap<Boolean>(storageFile, BooleanDataDescriptor.INSTANCE) {
fun markDirty(className: String) {
storage[className] = true
}
fun notDirty(className: String) {
storage.remove(className)
}
fun getDirtyOutputClasses(): Collection<String> =
storage.keys
fun isDirty(className: String): Boolean =
storage.contains(className)
override fun dumpValue(value: Boolean) = ""
}
private inner class InlineFunctionsMap(storageFile: File) : BasicStringMap<Map<String, Long>>(storageFile, StringToLongMapExternalizer) {
private fun getInlineFunctionsMap(header: KotlinClassHeader, bytes: ByteArray): Map<String, Long> {
val inlineFunctions = inlineFunctionsJvmNames(header)
if (inlineFunctions.isEmpty()) return emptyMap()
val result = HashMap<String, Long>()
ClassReader(bytes).accept(object : ClassVisitor(Opcodes.ASM5) {
override fun visitMethod(access: Int, name: String, desc: String, signature: String?, exceptions: Array<out String>?): MethodVisitor? {
val dummyClassWriter = ClassWriter(Opcodes.ASM5)
return object : MethodVisitor(Opcodes.ASM5, dummyClassWriter.visitMethod(0, name, desc, null, exceptions)) {
override fun visitEnd() {
val jvmName = name + desc
if (jvmName !in inlineFunctions) return
val dummyBytes = dummyClassWriter.toByteArray()!!
val hash = dummyBytes.md5()
result[jvmName] = hash
}
}
}
}, 0)
return result
}
fun process(kotlinClass: LocalFileKotlinClass, isPackage: Boolean): CompilationResult {
return put(kotlinClass.className, getInlineFunctionsMap(kotlinClass.classHeader, kotlinClass.fileContents), isPackage)
}
private fun put(className: JvmClassName, newMap: Map<String, Long>, isPackage: Boolean): CompilationResult {
val internalName = className.internalName
val oldMap = storage[internalName] ?: emptyMap()
val added = hashSetOf<String>()
val changed = hashSetOf<String>()
val allFunctions = oldMap.keys + newMap.keys
for (fn in allFunctions) {
val oldHash = oldMap[fn]
val newHash = newMap[fn]
when {
oldHash == null -> added.add(fn)
oldHash != newHash -> changed.add(fn)
}
}
when {
newMap.isNotEmpty() -> storage[internalName] = newMap
else -> storage.remove(internalName)
}
val changes =
if (IncrementalCompilation.isExperimental()) {
val fqName = if (isPackage) className.packageFqName else className.fqNameForClassNameWithoutDollars
// TODO get name in better way instead of using substringBefore
(added.asSequence() + changed.asSequence()).map { ChangeInfo.MembersChanged(fqName, listOf(it.substringBefore("("))) }
}
else {
emptySequence<ChangeInfo>()
}
processChangedInlineFunctions(className, changed)
return CompilationResult(inlineChanged = changed.isNotEmpty(),
inlineAdded = added.isNotEmpty(),
changes = changes)
}
fun remove(className: JvmClassName) {
storage.remove(className.internalName)
}
override fun dumpValue(value: Map<String, Long>): String =
value.dumpMap { java.lang.Long.toHexString(it) }
}
protected open fun processChangedInlineFunctions(
className: JvmClassName,
changedFunctions: Collection<String>
) {
}
}
sealed class ChangeInfo(val fqName: FqName) {
open class MembersChanged(fqName: FqName, val names: Collection<String>) : ChangeInfo(fqName) {
override fun toStringProperties(): String = super.toStringProperties() + ", names = $names"
}
class Removed(fqName: FqName, names: Collection<String>) : MembersChanged(fqName, names)
class SignatureChanged(fqName: FqName, val areSubclassesAffected: Boolean) : ChangeInfo(fqName)
protected open fun toStringProperties(): String = "fqName = $fqName"
override fun toString(): String {
return this.javaClass.simpleName + "(${toStringProperties()})"
}
}
data class CompilationResult(
val protoChanged: Boolean = false,
val constantsChanged: Boolean = false,
val inlineChanged: Boolean = false,
val inlineAdded: Boolean = false,
val changes: Sequence<ChangeInfo> = emptySequence()
) {
companion object {
val NO_CHANGES: CompilationResult = CompilationResult()
}
operator fun plus(other: CompilationResult): CompilationResult =
CompilationResult(protoChanged || other.protoChanged,
constantsChanged || other.constantsChanged,
inlineChanged || other.inlineChanged,
inlineAdded || other.inlineAdded,
changes + other.changes)
}
fun ByteArray.md5(): Long {
val d = MessageDigest.getInstance("MD5").digest(this)!!
return ((d[0].toLong() and 0xFFL)
or ((d[1].toLong() and 0xFFL) shl 8)
or ((d[2].toLong() and 0xFFL) shl 16)
or ((d[3].toLong() and 0xFFL) shl 24)
or ((d[4].toLong() and 0xFFL) shl 32)
or ((d[5].toLong() and 0xFFL) shl 40)
or ((d[6].toLong() and 0xFFL) shl 48)
or ((d[7].toLong() and 0xFFL) shl 56)
)
}
@TestOnly
fun <K : Comparable<K>, V> Map<K, V>.dumpMap(dumpValue: (V)->String): String =
buildString {
append("{")
for (key in keys.sorted()) {
if (length != 1) {
append(", ")
}
val value = get(key)?.let(dumpValue) ?: "null"
append("$key -> $value")
}
append("}")
}
@TestOnly fun <T : Comparable<T>> Collection<T>.dumpCollection(): String =
"[${sorted().joinToString(", ", transform = Any::toString)}]"

View File

@@ -14,22 +14,19 @@
* limitations under the License.
*/
package org.jetbrains.kotlin.jps.incremental
package org.jetbrains.kotlin.incremental
import org.jetbrains.jps.incremental.ModuleBuildTarget
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
import org.jetbrains.kotlin.modules.TargetId
public class IncrementalCompilationComponentsImpl(
caches: Map<ModuleBuildTarget, IncrementalCache>,
class IncrementalCompilationComponentsImpl(
private val caches: Map<TargetId, IncrementalCache>,
private val lookupTracker: LookupTracker
): IncrementalCompilationComponents {
private val caches = caches.mapKeys { TargetId(it.key) }
override fun getIncrementalCache(target: TargetId): IncrementalCache =
caches[target]!!
caches[target] ?: throw Exception("Incremental cache for target ${target.name} not found")
override fun getLookupTracker(): LookupTracker = lookupTracker
}

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.jetbrains.kotlin.jps.incremental
package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.load.kotlin.FileBasedKotlinClass
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
@@ -26,23 +26,25 @@ class LocalFileKotlinClass private constructor(
private val file: File,
private val fileContents: ByteArray,
className: ClassId,
classVersion: Int,
classHeader: KotlinClassHeader,
innerClasses: FileBasedKotlinClass.InnerClassesInfo
) : FileBasedKotlinClass(className, classHeader, innerClasses) {
innerClasses: InnerClassesInfo
) : FileBasedKotlinClass(className, classVersion, classHeader, innerClasses) {
companion object {
fun create(file: File): LocalFileKotlinClass? {
val fileContents = file.readBytes()
return FileBasedKotlinClass.create(fileContents) {
className, classHeader, innerClasses ->
LocalFileKotlinClass(file, fileContents, className, classHeader, innerClasses)
className, classVersion, classHeader, innerClasses ->
LocalFileKotlinClass(file, fileContents, className, classVersion, classHeader, innerClasses)
}
}
}
public val className: JvmClassName by lazy { JvmClassName.byClassId(classId) }
val className: JvmClassName by lazy { JvmClassName.byClassId(classId) }
override fun getLocation(): String = file.absolutePath
override val location: String
get() = file.absolutePath
public override fun getFileContents(): ByteArray = fileContents

View File

@@ -0,0 +1,217 @@
/*
* Copyright 2010-2015 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.kotlin.incremental
import com.intellij.util.containers.MultiMap
import com.intellij.util.containers.StringInterner
import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.incremental.components.Position
import org.jetbrains.kotlin.incremental.components.ScopeKind
import org.jetbrains.kotlin.incremental.storage.*
import org.jetbrains.kotlin.utils.Printer
import org.jetbrains.kotlin.utils.keysToMap
import java.io.File
import java.util.*
open class LookupStorage(private val targetDataDir: File) : BasicMapsOwner() {
companion object {
private val DELETED_TO_SIZE_TRESHOLD = 0.5
private val MINIMUM_GARBAGE_COLLECTIBLE_SIZE = 10000
}
private val String.storageFile: File
get() = File(targetDataDir, this + "." + CACHE_EXTENSION)
private val countersFile = "counters".storageFile
private val idToFile = registerMap(IdToFileMap("id-to-file".storageFile))
private val fileToId = registerMap(FileToIdMap("file-to-id".storageFile))
private val lookupMap = registerMap(LookupMap("lookups".storageFile))
@Volatile
private var size: Int = 0
@Volatile
private var deletedCount: Int = 0
init {
if (countersFile.exists()) {
val lines = countersFile.readLines()
size = lines[0].toInt()
deletedCount = lines[1].toInt()
}
}
@Synchronized
fun get(lookupSymbol: LookupSymbol): Collection<String> {
val key = LookupSymbolKey(lookupSymbol.name, lookupSymbol.scope)
val fileIds = lookupMap[key] ?: return emptySet()
return fileIds.mapNotNull {
// null means it's outdated
idToFile[it]?.path
}
}
@Synchronized
fun addAll(lookups: Set<Map.Entry<LookupSymbol, Collection<String>>>, allPaths: Set<String>) {
val pathToId = allPaths.keysToMap { addFileIfNeeded(File(it)) }
for ((lookupSymbol, paths) in lookups) {
val key = LookupSymbolKey(lookupSymbol.name, lookupSymbol.scope)
val fileIds = paths.mapTo(HashSet<Int>()) { pathToId[it]!! }
fileIds.addAll(lookupMap[key] ?: emptySet())
lookupMap[key] = fileIds
}
}
@Synchronized
fun removeLookupsFrom(files: Sequence<File>) {
for (file in files) {
val id = fileToId[file] ?: continue
idToFile.remove(id)
fileToId.remove(file)
deletedCount++
}
}
@Synchronized
override fun clean() {
if (countersFile.exists()) {
countersFile.delete()
}
size = 0
deletedCount = 0
super.clean()
}
@Synchronized
override fun flush(memoryCachesOnly: Boolean) {
try {
removeGarbageIfNeeded()
if (size > 0) {
if (!countersFile.exists()) {
countersFile.parentFile.mkdirs()
countersFile.createNewFile()
}
countersFile.writeText("$size\n$deletedCount")
}
}
finally {
super.flush(memoryCachesOnly)
}
}
private fun addFileIfNeeded(file: File): Int {
val existing = fileToId[file]
if (existing != null) return existing
val id = size++
fileToId[file] = id
idToFile[id] = file
return id
}
private fun removeGarbageIfNeeded(force: Boolean = false) {
if (force || (size > MINIMUM_GARBAGE_COLLECTIBLE_SIZE && deletedCount.toDouble() / size > DELETED_TO_SIZE_TRESHOLD)) {
doRemoveGarbage()
}
}
private fun doRemoveGarbage() {
for (hash in lookupMap.keys) {
lookupMap[hash] = lookupMap[hash]!!.filter { it in idToFile }.toSet()
}
val oldFileToId = fileToId.toMap()
val oldIdToNewId = HashMap<Int, Int>(oldFileToId.size)
idToFile.clean()
fileToId.clean()
size = 0
deletedCount = 0
for ((file, oldId) in oldFileToId.entries) {
val newId = addFileIfNeeded(file)
oldIdToNewId[oldId] = newId
}
for (lookup in lookupMap.keys) {
val fileIds = lookupMap[lookup]!!.mapNotNull { oldIdToNewId[it] }.toSet()
if (fileIds.isEmpty()) {
lookupMap.remove(lookup)
}
else {
lookupMap[lookup] = fileIds
}
}
}
@TestOnly fun forceGC() {
removeGarbageIfNeeded(force = true)
flush(false)
}
@TestOnly fun dump(lookupSymbols: Set<LookupSymbol>, basePath: File? = null): String {
flush(false)
val sb = StringBuilder()
val p = Printer(sb)
val lookupsStrings = lookupSymbols.groupBy { LookupSymbolKey(it.name, it.scope) }
for (lookup in lookupMap.keys.sorted()) {
val fileIds = lookupMap[lookup]!!
val key = if (lookup in lookupsStrings) {
lookupsStrings[lookup]!!.map { "${it.scope}#${it.name}" }.sorted().joinToString(", ")
}
else {
lookup.toString()
}
val value = fileIds.map { idToFile[it]?.let { if (basePath == null) it.absolutePath else it.toRelativeString(basePath) } ?: it.toString() }.sorted().joinToString(", ")
p.println("$key -> $value")
}
return sb.toString()
}
}
class LookupTrackerImpl(private val delegate: LookupTracker) : LookupTracker {
val lookups = MultiMap<LookupSymbol, String>()
val pathInterner = StringInterner()
private val interner = StringInterner()
override val requiresPosition: Boolean
get() = delegate.requiresPosition
override fun record(filePath: String, position: Position, scopeFqName: String, scopeKind: ScopeKind, name: String) {
val internedScopeFqName = interner.intern(scopeFqName)
val internedName = interner.intern(name)
val internedFilePath = pathInterner.intern(filePath)
lookups.putValue(LookupSymbol(internedName, internedScopeFqName), internedFilePath)
delegate.record(internedFilePath, position, internedScopeFqName, scopeKind, internedName)
}
}
data class LookupSymbol(val name: String, val scope: String)

View File

@@ -1,5 +1,5 @@
/*
* Copyright 2010-2015 JetBrains s.r.o.
* Copyright 2010-2016 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.
@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.jetbrains.kotlin.jps.incremental
package org.jetbrains.kotlin.incremental
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.serialization.ProtoBuf
@@ -25,12 +25,12 @@ import java.util.*
/** This file is generated by org.jetbrains.kotlin.generators.protobuf.GenerateProtoBufCompare. DO NOT MODIFY MANUALLY */
open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, public val newNameResolver: NameResolver) {
open class ProtoCompareGenerated(val oldNameResolver: NameResolver, val newNameResolver: NameResolver) {
private val strings = Interner<String>()
public val oldStringIndexesMap: MutableMap<Int, Int> = hashMapOf()
public val newStringIndexesMap: MutableMap<Int, Int> = hashMapOf()
public val oldClassIdIndexesMap: MutableMap<Int, Int> = hashMapOf()
public val newClassIdIndexesMap: MutableMap<Int, Int> = hashMapOf()
val oldStringIndexesMap: MutableMap<Int, Int> = hashMapOf()
val newStringIndexesMap: MutableMap<Int, Int> = hashMapOf()
val oldClassIdIndexesMap: MutableMap<Int, Int> = hashMapOf()
val newClassIdIndexesMap: MutableMap<Int, Int> = hashMapOf()
private val classIds = Interner<ClassId>()
@@ -39,31 +39,47 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkEqualsPackageProperty(old, new)) return false
if (!checkEqualsPackageTypeAlias(old, new)) return false
if (old.hasTypeTable() != new.hasTypeTable()) return false
if (old.hasTypeTable()) {
if (!checkEquals(old.typeTable, new.typeTable)) return false
}
if (old.hasExtension(JvmProtoBuf.packageModuleName) != new.hasExtension(JvmProtoBuf.packageModuleName)) return false
if (old.hasExtension(JvmProtoBuf.packageModuleName)) {
if (!checkStringEquals(old.getExtension(JvmProtoBuf.packageModuleName), new.getExtension(JvmProtoBuf.packageModuleName))) return false
}
return true
}
public enum class ProtoBufPackageKind {
enum class ProtoBufPackageKind {
FUNCTION_LIST,
PROPERTY_LIST,
TYPE_TABLE
TYPE_ALIAS_LIST,
TYPE_TABLE,
PACKAGE_MODULE_NAME
}
public fun difference(old: ProtoBuf.Package, new: ProtoBuf.Package): EnumSet<ProtoBufPackageKind> {
fun difference(old: ProtoBuf.Package, new: ProtoBuf.Package): EnumSet<ProtoBufPackageKind> {
val result = EnumSet.noneOf(ProtoBufPackageKind::class.java)
if (!checkEqualsPackageFunction(old, new)) result.add(ProtoBufPackageKind.FUNCTION_LIST)
if (!checkEqualsPackageProperty(old, new)) result.add(ProtoBufPackageKind.PROPERTY_LIST)
if (!checkEqualsPackageTypeAlias(old, new)) result.add(ProtoBufPackageKind.TYPE_ALIAS_LIST)
if (old.hasTypeTable() != new.hasTypeTable()) result.add(ProtoBufPackageKind.TYPE_TABLE)
if (old.hasTypeTable()) {
if (!checkEquals(old.typeTable, new.typeTable)) result.add(ProtoBufPackageKind.TYPE_TABLE)
}
if (old.hasExtension(JvmProtoBuf.packageModuleName) != new.hasExtension(JvmProtoBuf.packageModuleName)) result.add(ProtoBufPackageKind.PACKAGE_MODULE_NAME)
if (old.hasExtension(JvmProtoBuf.packageModuleName)) {
if (!checkStringEquals(old.getExtension(JvmProtoBuf.packageModuleName), new.getExtension(JvmProtoBuf.packageModuleName))) result.add(ProtoBufPackageKind.PACKAGE_MODULE_NAME)
}
return result
}
@@ -94,6 +110,8 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkEqualsClassProperty(old, new)) return false
if (!checkEqualsClassTypeAlias(old, new)) return false
if (!checkEqualsClassEnumEntry(old, new)) return false
if (old.hasTypeTable() != new.hasTypeTable()) return false
@@ -101,15 +119,14 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkEquals(old.typeTable, new.typeTable)) return false
}
if (old.getExtensionCount(JvmProtoBuf.classAnnotation) != new.getExtensionCount(JvmProtoBuf.classAnnotation)) return false
for(i in 0..old.getExtensionCount(JvmProtoBuf.classAnnotation) - 1) {
if (!checkEquals(old.getExtension(JvmProtoBuf.classAnnotation, i), new.getExtension(JvmProtoBuf.classAnnotation, i))) return false
if (old.hasExtension(JvmProtoBuf.classModuleName) != new.hasExtension(JvmProtoBuf.classModuleName)) return false
if (old.hasExtension(JvmProtoBuf.classModuleName)) {
if (!checkStringEquals(old.getExtension(JvmProtoBuf.classModuleName), new.getExtension(JvmProtoBuf.classModuleName))) return false
}
return true
}
public enum class ProtoBufClassKind {
enum class ProtoBufClassKind {
FLAGS,
FQ_NAME,
COMPANION_OBJECT_NAME,
@@ -120,12 +137,13 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
CONSTRUCTOR_LIST,
FUNCTION_LIST,
PROPERTY_LIST,
TYPE_ALIAS_LIST,
ENUM_ENTRY_LIST,
TYPE_TABLE,
CLASS_ANNOTATION_LIST
CLASS_MODULE_NAME
}
public fun difference(old: ProtoBuf.Class, new: ProtoBuf.Class): EnumSet<ProtoBufClassKind> {
fun difference(old: ProtoBuf.Class, new: ProtoBuf.Class): EnumSet<ProtoBufClassKind> {
val result = EnumSet.noneOf(ProtoBufClassKind::class.java)
if (old.hasFlags() != new.hasFlags()) result.add(ProtoBufClassKind.FLAGS)
@@ -154,6 +172,8 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkEqualsClassProperty(old, new)) result.add(ProtoBufClassKind.PROPERTY_LIST)
if (!checkEqualsClassTypeAlias(old, new)) result.add(ProtoBufClassKind.TYPE_ALIAS_LIST)
if (!checkEqualsClassEnumEntry(old, new)) result.add(ProtoBufClassKind.ENUM_ENTRY_LIST)
if (old.hasTypeTable() != new.hasTypeTable()) result.add(ProtoBufClassKind.TYPE_TABLE)
@@ -161,10 +181,9 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkEquals(old.typeTable, new.typeTable)) result.add(ProtoBufClassKind.TYPE_TABLE)
}
if (old.getExtensionCount(JvmProtoBuf.classAnnotation) != new.getExtensionCount(JvmProtoBuf.classAnnotation)) result.add(ProtoBufClassKind.CLASS_ANNOTATION_LIST)
for(i in 0..old.getExtensionCount(JvmProtoBuf.classAnnotation) - 1) {
if (!checkEquals(old.getExtension(JvmProtoBuf.classAnnotation, i), new.getExtension(JvmProtoBuf.classAnnotation, i))) result.add(ProtoBufClassKind.CLASS_ANNOTATION_LIST)
if (old.hasExtension(JvmProtoBuf.classModuleName) != new.hasExtension(JvmProtoBuf.classModuleName)) result.add(ProtoBufClassKind.CLASS_MODULE_NAME)
if (old.hasExtension(JvmProtoBuf.classModuleName)) {
if (!checkStringEquals(old.getExtension(JvmProtoBuf.classModuleName), new.getExtension(JvmProtoBuf.classModuleName))) result.add(ProtoBufClassKind.CLASS_MODULE_NAME)
}
return result
@@ -176,6 +195,11 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (old.flags != new.flags) return false
}
if (old.hasOldFlags() != new.hasOldFlags()) return false
if (old.hasOldFlags()) {
if (old.oldFlags != new.oldFlags) return false
}
if (!checkStringEquals(old.name, new.name)) return false
if (old.hasReturnType() != new.hasReturnType()) return false
@@ -212,11 +236,6 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkEquals(old.getExtension(JvmProtoBuf.methodSignature), new.getExtension(JvmProtoBuf.methodSignature))) return false
}
if (old.hasExtension(JvmProtoBuf.methodImplClassName) != new.hasExtension(JvmProtoBuf.methodImplClassName)) return false
if (old.hasExtension(JvmProtoBuf.methodImplClassName)) {
if (!checkStringEquals(old.getExtension(JvmProtoBuf.methodImplClassName), new.getExtension(JvmProtoBuf.methodImplClassName))) return false
}
return true
}
@@ -226,6 +245,11 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (old.flags != new.flags) return false
}
if (old.hasOldFlags() != new.hasOldFlags()) return false
if (old.hasOldFlags()) {
if (old.oldFlags != new.oldFlags) return false
}
if (!checkStringEquals(old.name, new.name)) return false
if (old.hasReturnType() != new.hasReturnType()) return false
@@ -270,11 +294,41 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkEquals(old.getExtension(JvmProtoBuf.propertySignature), new.getExtension(JvmProtoBuf.propertySignature))) return false
}
if (old.hasExtension(JvmProtoBuf.propertyImplClassName) != new.hasExtension(JvmProtoBuf.propertyImplClassName)) return false
if (old.hasExtension(JvmProtoBuf.propertyImplClassName)) {
if (!checkStringEquals(old.getExtension(JvmProtoBuf.propertyImplClassName), new.getExtension(JvmProtoBuf.propertyImplClassName))) return false
return true
}
open fun checkEquals(old: ProtoBuf.TypeAlias, new: ProtoBuf.TypeAlias): Boolean {
if (old.hasFlags() != new.hasFlags()) return false
if (old.hasFlags()) {
if (old.flags != new.flags) return false
}
if (!checkStringEquals(old.name, new.name)) return false
if (!checkEqualsTypeAliasTypeParameter(old, new)) return false
if (old.hasUnderlyingType() != new.hasUnderlyingType()) return false
if (old.hasUnderlyingType()) {
if (!checkEquals(old.underlyingType, new.underlyingType)) return false
}
if (old.hasUnderlyingTypeId() != new.hasUnderlyingTypeId()) return false
if (old.hasUnderlyingTypeId()) {
if (old.underlyingTypeId != new.underlyingTypeId) return false
}
if (old.hasExpandedType() != new.hasExpandedType()) return false
if (old.hasExpandedType()) {
if (!checkEquals(old.expandedType, new.expandedType)) return false
}
if (old.hasExpandedTypeId() != new.hasExpandedTypeId()) return false
if (old.hasExpandedTypeId()) {
if (old.expandedTypeId != new.expandedTypeId) return false
}
if (!checkEqualsTypeAliasAnnotation(old, new)) return false
return true
}
@@ -355,6 +409,31 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkStringEquals(old.typeParameterName, new.typeParameterName)) return false
}
if (old.hasTypeAliasName() != new.hasTypeAliasName()) return false
if (old.hasTypeAliasName()) {
if (!checkClassIdEquals(old.typeAliasName, new.typeAliasName)) return false
}
if (old.hasOuterType() != new.hasOuterType()) return false
if (old.hasOuterType()) {
if (!checkEquals(old.outerType, new.outerType)) return false
}
if (old.hasOuterTypeId() != new.hasOuterTypeId()) return false
if (old.hasOuterTypeId()) {
if (old.outerTypeId != new.outerTypeId) return false
}
if (old.hasAbbreviatedType() != new.hasAbbreviatedType()) return false
if (old.hasAbbreviatedType()) {
if (!checkEquals(old.abbreviatedType, new.abbreviatedType)) return false
}
if (old.hasAbbreviatedTypeId() != new.hasAbbreviatedTypeId()) return false
if (old.hasAbbreviatedTypeId()) {
if (old.abbreviatedTypeId != new.abbreviatedTypeId) return false
}
if (old.getExtensionCount(JvmProtoBuf.typeAnnotation) != new.getExtensionCount(JvmProtoBuf.typeAnnotation)) return false
for(i in 0..old.getExtensionCount(JvmProtoBuf.typeAnnotation) - 1) {
@@ -385,10 +464,11 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
return true
}
open fun checkEquals(old: ProtoBuf.Annotation, new: ProtoBuf.Annotation): Boolean {
if (!checkClassIdEquals(old.id, new.id)) return false
if (!checkEqualsAnnotationArgument(old, new)) return false
open fun checkEquals(old: ProtoBuf.EnumEntry, new: ProtoBuf.EnumEntry): Boolean {
if (old.hasName() != new.hasName()) return false
if (old.hasName()) {
if (!checkStringEquals(old.name, new.name)) return false
}
return true
}
@@ -421,11 +501,6 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (old.varargElementTypeId != new.varargElementTypeId) return false
}
if (old.hasExtension(JvmProtoBuf.index) != new.hasExtension(JvmProtoBuf.index)) return false
if (old.hasExtension(JvmProtoBuf.index)) {
if (old.getExtension(JvmProtoBuf.index) != new.getExtension(JvmProtoBuf.index)) return false
}
return true
}
@@ -467,6 +542,14 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
return true
}
open fun checkEquals(old: ProtoBuf.Annotation, new: ProtoBuf.Annotation): Boolean {
if (!checkClassIdEquals(old.id, new.id)) return false
if (!checkEqualsAnnotationArgument(old, new)) return false
return true
}
open fun checkEquals(old: ProtoBuf.Type.Argument, new: ProtoBuf.Type.Argument): Boolean {
if (old.hasProjection() != new.hasProjection()) return false
if (old.hasProjection()) {
@@ -486,14 +569,6 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
return true
}
open fun checkEquals(old: ProtoBuf.Annotation.Argument, new: ProtoBuf.Annotation.Argument): Boolean {
if (!checkStringEquals(old.nameId, new.nameId)) return false
if (!checkEquals(old.value, new.value)) return false
return true
}
open fun checkEquals(old: JvmProtoBuf.JvmFieldSignature, new: JvmProtoBuf.JvmFieldSignature): Boolean {
if (old.hasName() != new.hasName()) return false
if (old.hasName()) {
@@ -505,10 +580,13 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
if (!checkStringEquals(old.desc, new.desc)) return false
}
if (old.hasIsStaticInOuter() != new.hasIsStaticInOuter()) return false
if (old.hasIsStaticInOuter()) {
if (old.isStaticInOuter != new.isStaticInOuter) return false
}
return true
}
open fun checkEquals(old: ProtoBuf.Annotation.Argument, new: ProtoBuf.Annotation.Argument): Boolean {
if (!checkStringEquals(old.nameId, new.nameId)) return false
if (!checkEquals(old.value, new.value)) return false
return true
}
@@ -579,6 +657,16 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
return true
}
open fun checkEqualsPackageTypeAlias(old: ProtoBuf.Package, new: ProtoBuf.Package): Boolean {
if (old.typeAliasCount != new.typeAliasCount) return false
for(i in 0..old.typeAliasCount - 1) {
if (!checkEquals(old.getTypeAlias(i), new.getTypeAlias(i))) return false
}
return true
}
open fun checkEqualsClassTypeParameter(old: ProtoBuf.Class, new: ProtoBuf.Class): Boolean {
if (old.typeParameterCount != new.typeParameterCount) return false
@@ -649,11 +737,21 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
return true
}
open fun checkEqualsClassTypeAlias(old: ProtoBuf.Class, new: ProtoBuf.Class): Boolean {
if (old.typeAliasCount != new.typeAliasCount) return false
for(i in 0..old.typeAliasCount - 1) {
if (!checkEquals(old.getTypeAlias(i), new.getTypeAlias(i))) return false
}
return true
}
open fun checkEqualsClassEnumEntry(old: ProtoBuf.Class, new: ProtoBuf.Class): Boolean {
if (old.enumEntryCount != new.enumEntryCount) return false
for(i in 0..old.enumEntryCount - 1) {
if (!checkStringEquals(old.getEnumEntry(i), new.getEnumEntry(i))) return false
if (!checkEquals(old.getEnumEntry(i), new.getEnumEntry(i))) return false
}
return true
@@ -689,6 +787,26 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
return true
}
open fun checkEqualsTypeAliasTypeParameter(old: ProtoBuf.TypeAlias, new: ProtoBuf.TypeAlias): Boolean {
if (old.typeParameterCount != new.typeParameterCount) return false
for(i in 0..old.typeParameterCount - 1) {
if (!checkEquals(old.getTypeParameter(i), new.getTypeParameter(i))) return false
}
return true
}
open fun checkEqualsTypeAliasAnnotation(old: ProtoBuf.TypeAlias, new: ProtoBuf.TypeAlias): Boolean {
if (old.annotationCount != new.annotationCount) return false
for(i in 0..old.annotationCount - 1) {
if (!checkEquals(old.getAnnotation(i), new.getAnnotation(i))) return false
}
return true
}
open fun checkEqualsTypeTableType(old: ProtoBuf.TypeTable, new: ProtoBuf.TypeTable): Boolean {
if (old.typeCount != new.typeCount) return false
@@ -759,10 +877,10 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
return true
}
public fun oldGetIndexOfString(index: Int): Int = getIndexOfString(index, oldStringIndexesMap, oldNameResolver)
public fun newGetIndexOfString(index: Int): Int = getIndexOfString(index, newStringIndexesMap, newNameResolver)
fun oldGetIndexOfString(index: Int): Int = getIndexOfString(index, oldStringIndexesMap, oldNameResolver)
fun newGetIndexOfString(index: Int): Int = getIndexOfString(index, newStringIndexesMap, newNameResolver)
public fun getIndexOfString(index: Int, map: MutableMap<Int, Int>, nameResolver: NameResolver): Int {
fun getIndexOfString(index: Int, map: MutableMap<Int, Int>, nameResolver: NameResolver): Int {
map[index]?.let { return it }
val result = strings.intern(nameResolver.getString(index))
@@ -770,10 +888,10 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
return result
}
public fun oldGetIndexOfClassId(index: Int): Int = getIndexOfClassId(index, oldClassIdIndexesMap, oldNameResolver)
public fun newGetIndexOfClassId(index: Int): Int = getIndexOfClassId(index, newClassIdIndexesMap, newNameResolver)
fun oldGetIndexOfClassId(index: Int): Int = getIndexOfClassId(index, oldClassIdIndexesMap, oldNameResolver)
fun newGetIndexOfClassId(index: Int): Int = getIndexOfClassId(index, newClassIdIndexesMap, newNameResolver)
public fun getIndexOfClassId(index: Int, map: MutableMap<Int, Int>, nameResolver: NameResolver): Int {
fun getIndexOfClassId(index: Int, map: MutableMap<Int, Int>, nameResolver: NameResolver): Int {
map[index]?.let { return it }
val result = classIds.intern(nameResolver.getClassId(index))
@@ -790,7 +908,7 @@ open class ProtoCompareGenerated(public val oldNameResolver: NameResolver, publi
}
}
public fun ProtoBuf.Package.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.Package.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
for(i in 0..functionCount - 1) {
@@ -801,14 +919,22 @@ public fun ProtoBuf.Package.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes:
hashCode = 31 * hashCode + getProperty(i).hashCode(stringIndexes, fqNameIndexes)
}
for(i in 0..typeAliasCount - 1) {
hashCode = 31 * hashCode + getTypeAlias(i).hashCode(stringIndexes, fqNameIndexes)
}
if (hasTypeTable()) {
hashCode = 31 * hashCode + typeTable.hashCode(stringIndexes, fqNameIndexes)
}
if (hasExtension(JvmProtoBuf.packageModuleName)) {
hashCode = 31 * hashCode + stringIndexes(getExtension(JvmProtoBuf.packageModuleName))
}
return hashCode
}
public fun ProtoBuf.Class.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.Class.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasFlags()) {
@@ -849,28 +975,36 @@ public fun ProtoBuf.Class.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (
hashCode = 31 * hashCode + getProperty(i).hashCode(stringIndexes, fqNameIndexes)
}
for(i in 0..typeAliasCount - 1) {
hashCode = 31 * hashCode + getTypeAlias(i).hashCode(stringIndexes, fqNameIndexes)
}
for(i in 0..enumEntryCount - 1) {
hashCode = 31 * hashCode + stringIndexes(getEnumEntry(i))
hashCode = 31 * hashCode + getEnumEntry(i).hashCode(stringIndexes, fqNameIndexes)
}
if (hasTypeTable()) {
hashCode = 31 * hashCode + typeTable.hashCode(stringIndexes, fqNameIndexes)
}
for(i in 0..getExtensionCount(JvmProtoBuf.classAnnotation) - 1) {
hashCode = 31 * hashCode + getExtension(JvmProtoBuf.classAnnotation, i).hashCode(stringIndexes, fqNameIndexes)
if (hasExtension(JvmProtoBuf.classModuleName)) {
hashCode = 31 * hashCode + stringIndexes(getExtension(JvmProtoBuf.classModuleName))
}
return hashCode
}
public fun ProtoBuf.Function.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.Function.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasFlags()) {
hashCode = 31 * hashCode + flags
}
if (hasOldFlags()) {
hashCode = 31 * hashCode + oldFlags
}
hashCode = 31 * hashCode + stringIndexes(name)
if (hasReturnType()) {
@@ -905,20 +1039,20 @@ public fun ProtoBuf.Function.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes
hashCode = 31 * hashCode + getExtension(JvmProtoBuf.methodSignature).hashCode(stringIndexes, fqNameIndexes)
}
if (hasExtension(JvmProtoBuf.methodImplClassName)) {
hashCode = 31 * hashCode + stringIndexes(getExtension(JvmProtoBuf.methodImplClassName))
}
return hashCode
}
public fun ProtoBuf.Property.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.Property.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasFlags()) {
hashCode = 31 * hashCode + flags
}
if (hasOldFlags()) {
hashCode = 31 * hashCode + oldFlags
}
hashCode = 31 * hashCode + stringIndexes(name)
if (hasReturnType()) {
@@ -957,14 +1091,46 @@ public fun ProtoBuf.Property.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes
hashCode = 31 * hashCode + getExtension(JvmProtoBuf.propertySignature).hashCode(stringIndexes, fqNameIndexes)
}
if (hasExtension(JvmProtoBuf.propertyImplClassName)) {
hashCode = 31 * hashCode + stringIndexes(getExtension(JvmProtoBuf.propertyImplClassName))
return hashCode
}
fun ProtoBuf.TypeAlias.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasFlags()) {
hashCode = 31 * hashCode + flags
}
hashCode = 31 * hashCode + stringIndexes(name)
for(i in 0..typeParameterCount - 1) {
hashCode = 31 * hashCode + getTypeParameter(i).hashCode(stringIndexes, fqNameIndexes)
}
if (hasUnderlyingType()) {
hashCode = 31 * hashCode + underlyingType.hashCode(stringIndexes, fqNameIndexes)
}
if (hasUnderlyingTypeId()) {
hashCode = 31 * hashCode + underlyingTypeId
}
if (hasExpandedType()) {
hashCode = 31 * hashCode + expandedType.hashCode(stringIndexes, fqNameIndexes)
}
if (hasExpandedTypeId()) {
hashCode = 31 * hashCode + expandedTypeId
}
for(i in 0..annotationCount - 1) {
hashCode = 31 * hashCode + getAnnotation(i).hashCode(stringIndexes, fqNameIndexes)
}
return hashCode
}
public fun ProtoBuf.TypeTable.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.TypeTable.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
for(i in 0..typeCount - 1) {
@@ -978,7 +1144,7 @@ public fun ProtoBuf.TypeTable.hashCode(stringIndexes: (Int) -> Int, fqNameIndexe
return hashCode
}
public fun ProtoBuf.TypeParameter.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.TypeParameter.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
hashCode = 31 * hashCode + id
@@ -1008,7 +1174,7 @@ public fun ProtoBuf.TypeParameter.hashCode(stringIndexes: (Int) -> Int, fqNameIn
return hashCode
}
public fun ProtoBuf.Type.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.Type.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
for(i in 0..argumentCount - 1) {
@@ -1043,6 +1209,26 @@ public fun ProtoBuf.Type.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (I
hashCode = 31 * hashCode + stringIndexes(typeParameterName)
}
if (hasTypeAliasName()) {
hashCode = 31 * hashCode + fqNameIndexes(typeAliasName)
}
if (hasOuterType()) {
hashCode = 31 * hashCode + outerType.hashCode(stringIndexes, fqNameIndexes)
}
if (hasOuterTypeId()) {
hashCode = 31 * hashCode + outerTypeId
}
if (hasAbbreviatedType()) {
hashCode = 31 * hashCode + abbreviatedType.hashCode(stringIndexes, fqNameIndexes)
}
if (hasAbbreviatedTypeId()) {
hashCode = 31 * hashCode + abbreviatedTypeId
}
for(i in 0..getExtensionCount(JvmProtoBuf.typeAnnotation) - 1) {
hashCode = 31 * hashCode + getExtension(JvmProtoBuf.typeAnnotation, i).hashCode(stringIndexes, fqNameIndexes)
}
@@ -1054,7 +1240,7 @@ public fun ProtoBuf.Type.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (I
return hashCode
}
public fun ProtoBuf.Constructor.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.Constructor.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasFlags()) {
@@ -1072,19 +1258,17 @@ public fun ProtoBuf.Constructor.hashCode(stringIndexes: (Int) -> Int, fqNameInde
return hashCode
}
public fun ProtoBuf.Annotation.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.EnumEntry.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
hashCode = 31 * hashCode + fqNameIndexes(id)
for(i in 0..argumentCount - 1) {
hashCode = 31 * hashCode + getArgument(i).hashCode(stringIndexes, fqNameIndexes)
if (hasName()) {
hashCode = 31 * hashCode + stringIndexes(name)
}
return hashCode
}
public fun ProtoBuf.ValueParameter.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.ValueParameter.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasFlags()) {
@@ -1109,14 +1293,10 @@ public fun ProtoBuf.ValueParameter.hashCode(stringIndexes: (Int) -> Int, fqNameI
hashCode = 31 * hashCode + varargElementTypeId
}
if (hasExtension(JvmProtoBuf.index)) {
hashCode = 31 * hashCode + getExtension(JvmProtoBuf.index)
}
return hashCode
}
public fun JvmProtoBuf.JvmMethodSignature.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun JvmProtoBuf.JvmMethodSignature.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasName()) {
@@ -1130,7 +1310,7 @@ public fun JvmProtoBuf.JvmMethodSignature.hashCode(stringIndexes: (Int) -> Int,
return hashCode
}
public fun JvmProtoBuf.JvmPropertySignature.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun JvmProtoBuf.JvmPropertySignature.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasField()) {
@@ -1152,7 +1332,19 @@ public fun JvmProtoBuf.JvmPropertySignature.hashCode(stringIndexes: (Int) -> Int
return hashCode
}
public fun ProtoBuf.Type.Argument.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.Annotation.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
hashCode = 31 * hashCode + fqNameIndexes(id)
for(i in 0..argumentCount - 1) {
hashCode = 31 * hashCode + getArgument(i).hashCode(stringIndexes, fqNameIndexes)
}
return hashCode
}
fun ProtoBuf.Type.Argument.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasProjection()) {
@@ -1170,17 +1362,7 @@ public fun ProtoBuf.Type.Argument.hashCode(stringIndexes: (Int) -> Int, fqNameIn
return hashCode
}
public fun ProtoBuf.Annotation.Argument.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
hashCode = 31 * hashCode + stringIndexes(nameId)
hashCode = 31 * hashCode + value.hashCode(stringIndexes, fqNameIndexes)
return hashCode
}
public fun JvmProtoBuf.JvmFieldSignature.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun JvmProtoBuf.JvmFieldSignature.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasName()) {
@@ -1191,14 +1373,20 @@ public fun JvmProtoBuf.JvmFieldSignature.hashCode(stringIndexes: (Int) -> Int, f
hashCode = 31 * hashCode + stringIndexes(desc)
}
if (hasIsStaticInOuter()) {
hashCode = 31 * hashCode + isStaticInOuter.hashCode()
}
return hashCode
}
fun ProtoBuf.Annotation.Argument.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
hashCode = 31 * hashCode + stringIndexes(nameId)
hashCode = 31 * hashCode + value.hashCode(stringIndexes, fqNameIndexes)
return hashCode
}
public fun ProtoBuf.Annotation.Argument.Value.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
fun ProtoBuf.Annotation.Argument.Value.hashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
var hashCode = 1
if (hasType()) {

View File

@@ -0,0 +1,284 @@
/*
* Copyright 2010-2016 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.
*/
// these functions are used in the kotlin gradle plugin
@file:Suppress("unused")
package org.jetbrains.kotlin.incremental
import com.intellij.ide.highlighter.JavaFileType
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.util.text.StringUtil
import org.jetbrains.kotlin.build.GeneratedFile
import org.jetbrains.kotlin.build.GeneratedJvmClass
import org.jetbrains.kotlin.build.JvmSourceRoot
import org.jetbrains.kotlin.build.isModuleMappingFile
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
import org.jetbrains.kotlin.config.IncrementalCompilation
import org.jetbrains.kotlin.config.Services
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCache
import org.jetbrains.kotlin.load.kotlin.incremental.components.IncrementalCompilationComponents
import org.jetbrains.kotlin.modules.KotlinModuleXmlBuilder
import org.jetbrains.kotlin.modules.TargetId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.progress.CompilationCanceledStatus
import org.jetbrains.kotlin.utils.keysToMap
import java.io.File
import java.util.*
fun Iterable<File>.javaSourceRoots(roots: Iterable<File>): Iterable<File> =
filter { it.isJavaFile() }
.map { findSrcDirRoot(it, roots) }
.filterNotNull()
fun makeModuleFile(name: String, isTest: Boolean, outputDir: File, sourcesToCompile: Iterable<File>, javaSourceRoots: Iterable<File>, classpath: Iterable<File>, friendDirs: Iterable<File>): File {
val builder = KotlinModuleXmlBuilder()
builder.addModule(
name,
outputDir.absolutePath,
sourcesToCompile,
javaSourceRoots.map { JvmSourceRoot(it) },
classpath,
"java-production",
isTest,
// this excludes the output directories from the class path, to be removed for true incremental compilation
setOf(outputDir),
friendDirs
)
val scriptFile = File.createTempFile("kjps", StringUtil.sanitizeJavaIdentifier(name) + ".script.xml")
FileUtil.writeToFile(scriptFile, builder.asText().toString())
return scriptFile
}
fun makeCompileServices(
incrementalCaches: Map<TargetId, IncrementalCache>,
lookupTracker: LookupTracker,
compilationCanceledStatus: CompilationCanceledStatus?
): Services =
with(Services.Builder()) {
register(IncrementalCompilationComponents::class.java, IncrementalCompilationComponentsImpl(incrementalCaches, lookupTracker))
compilationCanceledStatus?.let {
register(CompilationCanceledStatus::class.java, it)
}
build()
}
fun makeLookupTracker(parentLookupTracker: LookupTracker = LookupTracker.DO_NOTHING): LookupTracker =
if (IncrementalCompilation.isExperimental()) LookupTrackerImpl(parentLookupTracker)
else parentLookupTracker
fun<Target> makeIncrementalCachesMap(
targets: Iterable<Target>,
getDependencies: (Target) -> Iterable<Target>,
getCache: (Target) -> IncrementalCacheImpl<Target>,
getTargetId: Target.() -> TargetId
): Map<TargetId, IncrementalCacheImpl<Target>>
{
val dependents = targets.keysToMap { hashSetOf<Target>() }
val targetsWithDependents = targets.toHashSet()
for (target in targets) {
for (dependency in getDependencies(target)) {
if (dependency !in targets) continue
dependents[dependency]!!.add(target)
targetsWithDependents.add(target)
}
}
val caches = targetsWithDependents.keysToMap { getCache(it) }
for ((target, cache) in caches) {
dependents[target]?.forEach {
cache.addDependentCache(caches[it]!!)
}
}
return caches.mapKeys { it.key.getTargetId() }
}
fun<Target> updateIncrementalCaches(
targets: Iterable<Target>,
generatedFiles: List<GeneratedFile<Target>>,
compiledWithErrors: Boolean,
getIncrementalCache: (Target) -> IncrementalCacheImpl<Target>
): CompilationResult {
var changesInfo = CompilationResult.NO_CHANGES
for (generatedFile in generatedFiles) {
val ic = getIncrementalCache(generatedFile.target)
when {
generatedFile is GeneratedJvmClass<Target> -> changesInfo += ic.saveFileToCache(generatedFile)
generatedFile.outputFile.isModuleMappingFile() -> changesInfo += ic.saveModuleMappingToCache(generatedFile.sourceFiles, generatedFile.outputFile)
}
}
if (!compiledWithErrors) {
targets.forEach {
val newChangesInfo = getIncrementalCache(it).clearCacheForRemovedClasses()
changesInfo += newChangesInfo
}
}
return changesInfo
}
fun LookupStorage.update(
lookupTracker: LookupTracker,
filesToCompile: Iterable<File>,
removedFiles: Iterable<File>
) {
if (lookupTracker !is LookupTrackerImpl) throw AssertionError("Lookup tracker is expected to be LookupTrackerImpl, got ${lookupTracker.javaClass}")
removeLookupsFrom(filesToCompile.asSequence() + removedFiles.asSequence())
addAll(lookupTracker.lookups.entrySet(), lookupTracker.pathInterner.values)
}
fun<Target> OutputItemsCollectorImpl.generatedFiles(
targets: Collection<Target>,
representativeTarget: Target,
getSources: (Target) -> Iterable<File>,
getOutputDir: (Target) -> File?
): List<GeneratedFile<Target>> {
// If there's only one target, this map is empty: get() always returns null, and the representativeTarget will be used below
val sourceToTarget =
if (targets.size >1) targets.flatMap { target -> getSources(target).map { Pair(it, target) } }.toMap()
else mapOf<File, Target>()
return outputs.map { outputItem ->
val target =
outputItem.sourceFiles.firstOrNull()?.let { sourceToTarget[it] } ?:
targets.filter { getOutputDir(it)?.let { outputItem.outputFile.startsWith(it) } ?: false }.singleOrNull() ?:
representativeTarget
if (outputItem.outputFile.name.endsWith(".class"))
GeneratedJvmClass(target, outputItem.sourceFiles, outputItem.outputFile)
else
GeneratedFile(target, outputItem.sourceFiles, outputItem.outputFile)
}
}
data class DirtyData(
val dirtyLookupSymbols: Iterable<LookupSymbol>,
val dirtyClassesFqNames: Iterable<FqName>
)
fun <Target> CompilationResult.getDirtyData(
caches: Iterable<IncrementalCacheImpl<Target>>,
log: (String)->Unit
): DirtyData {
val dirtyLookupSymbols = HashSet<LookupSymbol>()
val dirtyClassesFqNames = HashSet<FqName>()
for (change in changes) {
log("Process $change")
if (change is ChangeInfo.SignatureChanged) {
val fqNames = if (!change.areSubclassesAffected) listOf(change.fqName) else withSubtypes(change.fqName, caches)
for (classFqName in fqNames) {
assert(!classFqName.isRoot) { "$classFqName is root when processing $change" }
val scope = classFqName.parent().asString()
val name = classFqName.shortName().identifier
dirtyLookupSymbols.add(LookupSymbol(name, scope))
}
}
else if (change is ChangeInfo.MembersChanged) {
val fqNames = withSubtypes(change.fqName, caches)
// need to recompile subtypes because changed member might break override
dirtyClassesFqNames.addAll(fqNames)
for (name in change.names) {
for (fqName in fqNames) {
dirtyLookupSymbols.add(LookupSymbol(name, fqName.asString()))
}
}
}
}
return DirtyData(dirtyLookupSymbols, dirtyClassesFqNames)
}
fun mapLookupSymbolsToFiles(
lookupStorage: LookupStorage,
lookupSymbols: Iterable<LookupSymbol>,
log: (String)->Unit,
getLogFilePath: (File)->String = { it.canonicalPath },
excludes: Set<File> = emptySet()
): Set<File> {
val dirtyFiles = HashSet<File>()
for (lookup in lookupSymbols) {
val affectedFiles = lookupStorage.get(lookup).map(::File).filter { it !in excludes }
log("${lookup.scope}#${lookup.name} caused recompilation of: ${affectedFiles.map(getLogFilePath)}")
dirtyFiles.addAll(affectedFiles)
}
return dirtyFiles
}
fun <Target> mapClassesFqNamesToFiles(
caches: Iterable<IncrementalCacheImpl<Target>>,
classesFqNames: Iterable<FqName>,
log: (String)->Unit,
getLogFilePath: (File)->String = { it.canonicalPath },
excludes: Set<File> = emptySet()
): Set<File> {
val dirtyFiles = HashSet<File>()
for (cache in caches) {
for (dirtyClassFqName in classesFqNames) {
val srcFile = cache.getSourceFileIfClass(dirtyClassFqName)
if (srcFile == null || srcFile in excludes) continue
log("Class $dirtyClassFqName caused recompilation of: ${getLogFilePath(srcFile)}")
dirtyFiles.add(srcFile)
}
}
return dirtyFiles
}
private fun File.isJavaFile() = extension.equals(JavaFileType.INSTANCE.defaultExtension, ignoreCase = true)
private fun findSrcDirRoot(file: File, roots: Iterable<File>): File? =
roots.firstOrNull { FileUtil.isAncestor(it, file, false) }
private fun <Target> withSubtypes(
typeFqName: FqName,
caches: Iterable<IncrementalCacheImpl<Target>>
): Set<FqName> {
val types = LinkedList(listOf(typeFqName))
val subtypes = hashSetOf<FqName>()
while (types.isNotEmpty()) {
val unprocessedType = types.pollFirst()
caches.asSequence()
.flatMap { it.getSubtypesOf(unprocessedType) }
.filter { it !in subtypes }
.forEach { types.addLast(it) }
subtypes.add(unprocessedType)
}
return subtypes
}

View File

@@ -0,0 +1,282 @@
/*
* Copyright 2010-2016 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.kotlin.incremental
import org.jetbrains.kotlin.descriptors.Visibilities
import org.jetbrains.kotlin.incremental.ProtoCompareGenerated.ProtoBufClassKind
import org.jetbrains.kotlin.incremental.ProtoCompareGenerated.ProtoBufPackageKind
import org.jetbrains.kotlin.incremental.storage.ProtoMapValue
import org.jetbrains.kotlin.protobuf.MessageLite
import org.jetbrains.kotlin.serialization.Flags
import org.jetbrains.kotlin.serialization.ProtoBuf
import org.jetbrains.kotlin.serialization.deserialization.Deserialization
import org.jetbrains.kotlin.serialization.deserialization.NameResolver
import org.jetbrains.kotlin.serialization.jvm.JvmProtoBufUtil
import java.util.*
data class Difference(
val isClassAffected: Boolean = false,
val areSubclassesAffected: Boolean = false,
val changedMembersNames: Set<String> = emptySet()
)
fun difference(oldData: ProtoMapValue, newData: ProtoMapValue): Difference {
if (!oldData.isPackageFacade && newData.isPackageFacade) return Difference(isClassAffected = true, areSubclassesAffected = true)
if (oldData.isPackageFacade && !newData.isPackageFacade) return Difference(isClassAffected = true)
val differenceObject =
if (oldData.isPackageFacade) {
DifferenceCalculatorForPackageFacade(oldData, newData)
}
else {
DifferenceCalculatorForClass(oldData, newData)
}
return differenceObject.difference()
}
internal val MessageLite.isPrivate: Boolean
get() = Visibilities.isPrivate(Deserialization.visibility(
when (this) {
is ProtoBuf.Constructor -> Flags.VISIBILITY.get(flags)
is ProtoBuf.Function -> Flags.VISIBILITY.get(flags)
is ProtoBuf.Property -> Flags.VISIBILITY.get(flags)
is ProtoBuf.TypeAlias -> Flags.VISIBILITY.get(flags)
else -> error("Unknown message: $this")
}))
private fun MessageLite.name(nameResolver: NameResolver): String {
return when (this) {
is ProtoBuf.Constructor -> "<init>"
is ProtoBuf.Function -> nameResolver.getString(name)
is ProtoBuf.Property -> nameResolver.getString(name)
is ProtoBuf.TypeAlias -> nameResolver.getString(name)
else -> error("Unknown message: $this")
}
}
internal fun List<MessageLite>.names(nameResolver: NameResolver): List<String> = map { it.name(nameResolver) }
private abstract class DifferenceCalculator() {
protected abstract val oldNameResolver: NameResolver
protected abstract val newNameResolver: NameResolver
protected val compareObject by lazy { ProtoCompareGenerated(oldNameResolver, newNameResolver) }
abstract fun difference(): Difference
protected fun calcDifferenceForMembers(oldList: List<MessageLite>, newList: List<MessageLite>): Collection<String> {
val result = hashSetOf<String>()
val oldMap =
oldList.groupBy { it.getHashCode({ compareObject.oldGetIndexOfString(it) }, { compareObject.oldGetIndexOfClassId(it) }) }
val newMap =
newList.groupBy { it.getHashCode({ compareObject.newGetIndexOfString(it) }, { compareObject.newGetIndexOfClassId(it) }) }
val hashes = oldMap.keys + newMap.keys
for (hash in hashes) {
val oldMembers = oldMap[hash]
val newMembers = newMap[hash]
val differentMembers = when {
newMembers == null -> oldMembers!!.names(compareObject.oldNameResolver)
oldMembers == null -> newMembers.names(compareObject.newNameResolver)
else -> calcDifferenceForEqualHashes(oldMembers, newMembers)
}
result.addAll(differentMembers)
}
return result
}
private fun calcDifferenceForEqualHashes(
oldList: List<MessageLite>,
newList: List<MessageLite>
): Collection<String> {
val result = hashSetOf<String>()
val newSet = HashSet(newList)
oldList.forEach { oldMember ->
val newMember = newSet.firstOrNull { compareObject.checkEquals(oldMember, it) }
if (newMember != null) {
newSet.remove(newMember)
}
else {
result.add(oldMember.name(compareObject.oldNameResolver))
}
}
newSet.forEach { newMember ->
result.add(newMember.name(compareObject.newNameResolver))
}
return result
}
protected fun calcDifferenceForNames(
oldList: List<Int>,
newList: List<Int>
): Collection<String> {
val oldNames = oldList.map { compareObject.oldNameResolver.getString(it) }.toSet()
val newNames = newList.map { compareObject.newNameResolver.getString(it) }.toSet()
return oldNames.union(newNames) - oldNames.intersect(newNames)
}
private fun MessageLite.getHashCode(stringIndexes: (Int) -> Int, fqNameIndexes: (Int) -> Int): Int {
return when (this) {
is ProtoBuf.Constructor -> hashCode(stringIndexes, fqNameIndexes)
is ProtoBuf.Function -> hashCode(stringIndexes, fqNameIndexes)
is ProtoBuf.Property -> hashCode(stringIndexes, fqNameIndexes)
is ProtoBuf.TypeAlias -> hashCode(stringIndexes, fqNameIndexes)
else -> error("Unknown message: $this")
}
}
private fun ProtoCompareGenerated.checkEquals(old: MessageLite, new: MessageLite): Boolean {
return when {
old is ProtoBuf.Constructor && new is ProtoBuf.Constructor -> checkEquals(old, new)
old is ProtoBuf.Function && new is ProtoBuf.Function -> checkEquals(old, new)
old is ProtoBuf.Property && new is ProtoBuf.Property -> checkEquals(old, new)
old is ProtoBuf.TypeAlias && new is ProtoBuf.TypeAlias -> checkEquals(old, new)
else -> error("Unknown message: $this")
}
}
}
private class DifferenceCalculatorForClass(oldData: ProtoMapValue, newData: ProtoMapValue) : DifferenceCalculator() {
val oldClassData = JvmProtoBufUtil.readClassDataFrom(oldData.bytes, oldData.strings)
val newClassData = JvmProtoBufUtil.readClassDataFrom(newData.bytes, newData.strings)
val oldProto = oldClassData.classProto
val newProto = newClassData.classProto
override val oldNameResolver = oldClassData.nameResolver
override val newNameResolver = newClassData.nameResolver
val diff = compareObject.difference(oldProto, newProto)
override fun difference(): Difference {
var isClassAffected = false
var areSubclassesAffected = false
val names = hashSetOf<String>()
val classIsSealed = newProto.isSealed && oldProto.isSealed
fun Int.oldToNames() = names.add(oldNameResolver.getString(this))
fun Int.newToNames() = names.add(newNameResolver.getString(this))
fun calcDifferenceForNonPrivateMembers(members: (ProtoBuf.Class) -> List<MessageLite>): Collection<String> {
val oldMembers = members(oldProto).filterNot { it.isPrivate }
val newMembers = members(newProto).filterNot { it.isPrivate }
return calcDifferenceForMembers(oldMembers, newMembers)
}
for (kind in diff) {
when (kind!!) {
ProtoBufClassKind.COMPANION_OBJECT_NAME -> {
if (oldProto.hasCompanionObjectName()) oldProto.companionObjectName.oldToNames()
if (newProto.hasCompanionObjectName()) newProto.companionObjectName.newToNames()
}
ProtoBufClassKind.NESTED_CLASS_NAME_LIST -> {
if (classIsSealed) {
// when class is sealed, adding an implementation can break exhaustive when expressions
// the workaround is to recompile all class usages
isClassAffected = true
}
names.addAll(calcDifferenceForNames(oldProto.nestedClassNameList, newProto.nestedClassNameList))
}
ProtoBufClassKind.CONSTRUCTOR_LIST -> {
val differentNonPrivateConstructors = calcDifferenceForNonPrivateMembers(ProtoBuf.Class::getConstructorList)
if (differentNonPrivateConstructors.isNotEmpty()) {
isClassAffected = true
}
}
ProtoBufClassKind.FUNCTION_LIST ->
names.addAll(calcDifferenceForNonPrivateMembers(ProtoBuf.Class::getFunctionList))
ProtoBufClassKind.PROPERTY_LIST ->
names.addAll(calcDifferenceForNonPrivateMembers(ProtoBuf.Class::getPropertyList))
ProtoBufClassKind.TYPE_ALIAS_LIST ->
names.addAll(calcDifferenceForNonPrivateMembers(ProtoBuf.Class::getTypeAliasList))
ProtoBufClassKind.ENUM_ENTRY_LIST -> {
isClassAffected = true
}
ProtoBufClassKind.TYPE_TABLE -> {
// TODO
}
ProtoBufClassKind.FLAGS,
ProtoBufClassKind.FQ_NAME,
ProtoBufClassKind.TYPE_PARAMETER_LIST,
ProtoBufClassKind.SUPERTYPE_LIST,
ProtoBufClassKind.SUPERTYPE_ID_LIST-> {
isClassAffected = true
areSubclassesAffected = true
}
ProtoBufClassKind.CLASS_MODULE_NAME -> {
// TODO
}
}
}
return Difference(isClassAffected, areSubclassesAffected, names)
}
}
private class DifferenceCalculatorForPackageFacade(oldData: ProtoMapValue, newData: ProtoMapValue) : DifferenceCalculator() {
val oldPackageData = JvmProtoBufUtil.readPackageDataFrom(oldData.bytes, oldData.strings)
val newPackageData = JvmProtoBufUtil.readPackageDataFrom(newData.bytes, newData.strings)
val oldProto = oldPackageData.packageProto
val newProto = newPackageData.packageProto
override val oldNameResolver = oldPackageData.nameResolver
override val newNameResolver = newPackageData.nameResolver
val diff = compareObject.difference(oldProto, newProto)
override fun difference(): Difference {
val names = hashSetOf<String>()
fun calcDifferenceForNonPrivateMembers(members: (ProtoBuf.Package) -> List<MessageLite>): Collection<String> {
val oldMembers = members(oldProto).filterNot { it.isPrivate }
val newMembers = members(newProto).filterNot { it.isPrivate }
return calcDifferenceForMembers(oldMembers, newMembers)
}
for (kind in diff) {
when (kind!!) {
ProtoBufPackageKind.FUNCTION_LIST ->
names.addAll(calcDifferenceForNonPrivateMembers(ProtoBuf.Package::getFunctionList))
ProtoBufPackageKind.PROPERTY_LIST ->
names.addAll(calcDifferenceForNonPrivateMembers(ProtoBuf.Package::getPropertyList))
ProtoBufPackageKind.TYPE_ALIAS_LIST ->
names.addAll(calcDifferenceForNonPrivateMembers(ProtoBuf.Package::getTypeAliasList))
ProtoBufPackageKind.TYPE_TABLE,
ProtoBufPackageKind.PACKAGE_MODULE_NAME -> {
// TODO
}
else -> throw IllegalArgumentException("Unsupported kind: $kind")
}
}
return Difference(changedMembersNames = names)
}
}
private val ProtoBuf.Class.isSealed: Boolean
get() = ProtoBuf.Modality.SEALED == Flags.MODALITY.get(flags)

View File

@@ -14,7 +14,7 @@
* limitations under the License.
*/
package org.jetbrains.kotlin.jps.incremental.storage
package org.jetbrains.kotlin.incremental.storage
import com.intellij.util.io.DataExternalizer
import com.intellij.util.io.EnumeratorStringDescriptor
@@ -23,14 +23,14 @@ import org.jetbrains.annotations.TestOnly
import org.jetbrains.kotlin.utils.Printer
import java.io.File
internal abstract class BasicMap<K : Comparable<K>, V>(
abstract class BasicMap<K : Comparable<K>, V>(
storageFile: File,
keyDescriptor: KeyDescriptor<K>,
valueExternalizer: DataExternalizer<V>
) {
protected val storage = LazyStorage(storageFile, keyDescriptor, valueExternalizer)
open fun clean() {
fun clean() {
storage.clean()
}
@@ -60,19 +60,22 @@ internal abstract class BasicMap<K : Comparable<K>, V>(
}.toString()
}
@TestOnly
protected abstract fun dumpKey(key: K): String
@TestOnly
protected abstract fun dumpValue(value: V): String
}
internal abstract class BasicStringMap<V>(
abstract class BasicStringMap<V>(
storageFile: File,
keyDescriptor: KeyDescriptor<String>,
valueExternalizer: DataExternalizer<V>
) : BasicMap<String, V>(storageFile, keyDescriptor, valueExternalizer) {
public constructor(
constructor(
storageFile: File,
valueExternalizer: DataExternalizer<V>
) : this(storageFile, EnumeratorStringDescriptor.INSTANCE, valueExternalizer)
override fun dumpKey(key: String): String = key
}
}

View File

@@ -0,0 +1,46 @@
/*
* Copyright 2010-2015 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.kotlin.incremental.storage
import org.jetbrains.annotations.TestOnly
open class BasicMapsOwner {
private val maps = arrayListOf<BasicMap<*, *>>()
companion object {
val CACHE_EXTENSION = "tab"
}
protected fun <K, V, M : BasicMap<K, V>> registerMap(map: M): M {
maps.add(map)
return map
}
open fun clean() {
maps.forEach { it.clean() }
}
open fun close() {
maps.forEach { it.close() }
}
open fun flush(memoryCachesOnly: Boolean) {
maps.forEach { it.flush(memoryCachesOnly) }
}
@TestOnly fun dump(): String = maps.map { it.dump() }.joinToString("\n\n")
}

View File

@@ -0,0 +1,55 @@
/*
* Copyright 2010-2015 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.kotlin.incremental.storage
import org.jetbrains.kotlin.incremental.dumpCollection
import org.jetbrains.kotlin.name.FqName
import java.io.File
internal open class ClassOneToManyMap(
storageFile: File
) : BasicStringMap<Collection<String>>(storageFile, StringCollectionExternalizer) {
override fun dumpValue(value: Collection<String>): String = value.dumpCollection()
fun add(key: FqName, value: FqName) {
storage.append(key.asString(), value.asString())
}
operator fun get(key: FqName): Collection<FqName> =
storage[key.asString()]?.map(::FqName) ?: setOf()
operator fun set(key: FqName, values: Collection<FqName>) {
if (values.isEmpty()) {
remove(key)
return
}
storage[key.asString()] = values.map(FqName::asString)
}
fun remove(key: FqName) {
storage.remove(key.asString())
}
fun removeValues(key: FqName, removed: Set<FqName>) {
val notRemoved = this[key].filter { it !in removed }
this[key] = notRemoved
}
}
internal class SubtypesMap(storageFile: File) : ClassOneToManyMap(storageFile)
internal class SupertypesMap(storageFile: File) : ClassOneToManyMap(storageFile)

View File

@@ -0,0 +1,38 @@
/*
* Copyright 2010-2015 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.kotlin.incremental.storage
import org.jetbrains.kotlin.utils.keysToMap
import java.io.File
internal class FileToIdMap(file: File) : BasicMap<File, Int>(file, FileKeyDescriptor, IntExternalizer) {
override fun dumpKey(key: File): String = key.toString()
override fun dumpValue(value: Int): String = value.toString()
operator fun get(file: File): Int? = storage[file]
operator fun set(file: File, id: Int) {
storage[file] = id
}
fun remove(file: File) {
storage.remove(file)
}
fun toMap(): Map<File, Int> = storage.keys.keysToMap { storage[it]!! }
}

View File

@@ -0,0 +1,38 @@
/*
* Copyright 2010-2015 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.kotlin.incremental.storage
import com.intellij.util.io.ExternalIntegerKeyDescriptor
import java.io.File
internal class IdToFileMap(file: File) : BasicMap<Int, File>(file, ExternalIntegerKeyDescriptor(), FileKeyDescriptor) {
override fun dumpKey(key: Int): String = key.toString()
override fun dumpValue(value: File): String = value.toString()
operator fun get(id: Int): File? = storage[id]
operator fun contains(id: Int): Boolean = id in storage
operator fun set(id: Int, file: File) {
storage[id] = file
}
fun remove(id: Int) {
storage.remove(id)
}
}

View File

@@ -14,9 +14,10 @@
* limitations under the License.
*/
package org.jetbrains.kotlin.jps.incremental.storage
package org.jetbrains.kotlin.incremental.storage
import com.intellij.util.io.DataExternalizer
import com.intellij.util.io.IOUtil
import com.intellij.util.io.KeyDescriptor
import com.intellij.util.io.PersistentHashMap
import java.io.DataOutput
@@ -27,7 +28,7 @@ import java.io.IOException
/**
* It's lazy in a sense that PersistentHashMap is created only on write
*/
internal class LazyStorage<K, V>(
class LazyStorage<K, V>(
private val storageFile: File,
private val keyDescriptor: KeyDescriptor<K>,
private val valueExternalizer: DataExternalizer<V>
@@ -73,8 +74,12 @@ internal class LazyStorage<K, V>(
getStorageIfExists()?.remove(key)
}
fun append(key: K, append: (DataOutput)->Unit) {
getStorageOrCreateNew().appendData(key, append)
fun append(key: K, value: String) {
append(key) { out -> IOUtil.writeUTF(out, value) }
}
fun append(key: K, value: Int) {
append(key) { out -> out.writeInt(value) }
}
@Synchronized
@@ -110,4 +115,8 @@ internal class LazyStorage<K, V>(
private fun createMap(): PersistentHashMap<K, V> =
PersistentHashMap(storageFile, keyDescriptor, valueExternalizer)
private fun append(key: K, append: (DataOutput)->Unit) {
getStorageOrCreateNew().appendData(key, append)
}
}

View File

@@ -0,0 +1,42 @@
/*
* Copyright 2010-2015 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.kotlin.incremental.storage
import java.io.File
internal class LookupMap(storage: File) : BasicMap<LookupSymbolKey, Collection<Int>>(storage, LookupSymbolKeyDescriptor, IntCollectionExternalizer) {
override fun dumpKey(key: LookupSymbolKey): String = key.toString()
override fun dumpValue(value: Collection<Int>): String = value.toString()
fun add(name: String, scope: String, fileId: Int) {
storage.append(LookupSymbolKey(name, scope), fileId)
}
operator fun get(key: LookupSymbolKey): Collection<Int>? = storage[key]
operator fun set(key: LookupSymbolKey, fileIds: Set<Int>) {
storage[key] = fileIds
}
fun remove(key: LookupSymbolKey) {
storage.remove(key)
}
val keys: Collection<LookupSymbolKey>
get() = storage.keys
}

View File

@@ -0,0 +1,216 @@
/*
* Copyright 2010-2015 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.kotlin.incremental.storage
import com.intellij.openapi.util.io.FileUtil
import com.intellij.util.io.DataExternalizer
import com.intellij.util.io.EnumeratorStringDescriptor
import com.intellij.util.io.IOUtil
import com.intellij.util.io.KeyDescriptor
import java.io.DataInput
import java.io.DataInputStream
import java.io.DataOutput
import java.io.File
import java.util.*
object LookupSymbolKeyDescriptor : KeyDescriptor<LookupSymbolKey> {
override fun read(input: DataInput): LookupSymbolKey {
val first = input.readInt()
val second = input.readInt()
return LookupSymbolKey(first, second)
}
override fun save(output: DataOutput, value: LookupSymbolKey) {
output.writeInt(value.nameHash)
output.writeInt(value.scopeHash)
}
override fun getHashCode(value: LookupSymbolKey): Int = value.hashCode()
override fun isEqual(val1: LookupSymbolKey, val2: LookupSymbolKey): Boolean = val1 == val2
}
object ProtoMapValueExternalizer : DataExternalizer<ProtoMapValue> {
override fun save(output: DataOutput, value: ProtoMapValue) {
output.writeBoolean(value.isPackageFacade)
output.writeInt(value.bytes.size)
output.write(value.bytes)
output.writeInt(value.strings.size)
for (string in value.strings) {
output.writeUTF(string)
}
}
override fun read(input: DataInput): ProtoMapValue {
val isPackageFacade = input.readBoolean()
val bytesLength = input.readInt()
val bytes = ByteArray(bytesLength)
input.readFully(bytes, 0, bytesLength)
val stringsLength = input.readInt()
val strings = Array<String>(stringsLength) { input.readUTF() }
return ProtoMapValue(isPackageFacade, bytes, strings)
}
}
abstract class StringMapExternalizer<T> : DataExternalizer<Map<String, T>> {
override fun save(output: DataOutput, map: Map<String, T>?) {
output.writeInt(map!!.size)
for ((key, value) in map.entries) {
IOUtil.writeString(key, output)
writeValue(output, value)
}
}
override fun read(input: DataInput): Map<String, T>? {
val size = input.readInt()
val map = HashMap<String, T>(size)
repeat(size) {
val name = IOUtil.readString(input)!!
map[name] = readValue(input)
}
return map
}
protected abstract fun writeValue(output: DataOutput, value: T)
protected abstract fun readValue(input: DataInput): T
}
object StringToLongMapExternalizer : StringMapExternalizer<Long>() {
override fun readValue(input: DataInput): Long = input.readLong()
override fun writeValue(output: DataOutput, value: Long) {
output.writeLong(value)
}
}
object ConstantsMapExternalizer : DataExternalizer<Map<String, Any>> {
override fun save(output: DataOutput, map: Map<String, Any>?) {
output.writeInt(map!!.size)
for (name in map.keys.sorted()) {
IOUtil.writeString(name, output)
val value = map[name]!!
when (value) {
is Int -> {
output.writeByte(Kind.INT.ordinal)
output.writeInt(value)
}
is Float -> {
output.writeByte(Kind.FLOAT.ordinal)
output.writeFloat(value)
}
is Long -> {
output.writeByte(Kind.LONG.ordinal)
output.writeLong(value)
}
is Double -> {
output.writeByte(Kind.DOUBLE.ordinal)
output.writeDouble(value)
}
is String -> {
output.writeByte(Kind.STRING.ordinal)
IOUtil.writeString(value, output)
}
else -> throw IllegalStateException("Unexpected constant class: ${value.javaClass}")
}
}
}
override fun read(input: DataInput): Map<String, Any>? {
val size = input.readInt()
val map = HashMap<String, Any>(size)
repeat(size) {
val name = IOUtil.readString(input)!!
val kind = Kind.values()[input.readByte().toInt()]
val value: Any = when (kind) {
Kind.INT -> input.readInt()
Kind.FLOAT -> input.readFloat()
Kind.LONG -> input.readLong()
Kind.DOUBLE -> input.readDouble()
Kind.STRING -> IOUtil.readString(input)!!
}
map[name] = value
}
return map
}
private enum class Kind {
INT, FLOAT, LONG, DOUBLE, STRING
}
}
object IntExternalizer : DataExternalizer<Int> {
override fun read(input: DataInput): Int = input.readInt()
override fun save(output: DataOutput, value: Int) {
output.writeInt(value)
}
}
object PathStringDescriptor : EnumeratorStringDescriptor() {
override fun getHashCode(value: String) = FileUtil.pathHashCode(value)
override fun isEqual(val1: String, val2: String?) = FileUtil.pathsEqual(val1, val2)
}
object FileKeyDescriptor : KeyDescriptor<File> {
override fun read(input: DataInput): File = File(input.readUTF())
override fun save(output: DataOutput, value: File) {
output.writeUTF(value.canonicalPath)
}
override fun getHashCode(value: File?): Int =
FileUtil.FILE_HASHING_STRATEGY.computeHashCode(value)
override fun isEqual(val1: File?, val2: File?): Boolean =
FileUtil.FILE_HASHING_STRATEGY.equals(val1, val2)
}
open class CollectionExternalizer<T>(
private val elementExternalizer: DataExternalizer<T>,
private val newCollection: () -> MutableCollection<T>
) : DataExternalizer<Collection<T>> {
override fun read(input: DataInput): Collection<T> {
val result = newCollection()
val stream = input as DataInputStream
while (stream.available() > 0) {
result.add(elementExternalizer.read(stream))
}
return result
}
override fun save(output: DataOutput, value: Collection<T>) {
value.forEach { elementExternalizer.save(output, it) }
}
}
object StringCollectionExternalizer : CollectionExternalizer<String>(EnumeratorStringDescriptor(), { HashSet() })
object IntCollectionExternalizer : CollectionExternalizer<Int>(IntExternalizer, { HashSet() })

View File

@@ -0,0 +1,31 @@
/*
* Copyright 2010-2015 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.kotlin.incremental.storage
data class LookupSymbolKey(val nameHash: Int, val scopeHash: Int) : Comparable<LookupSymbolKey> {
constructor(name: String, scope: String) : this(name.hashCode(), scope.hashCode())
override fun compareTo(other: LookupSymbolKey): Int {
val nameCmp = nameHash.compareTo(other.nameHash)
if (nameCmp != 0) return nameCmp
return scopeHash.compareTo(other.scopeHash)
}
}
data class ProtoMapValue(val isPackageFacade: Boolean, val bytes: ByteArray, val strings: Array<String>)

View File

@@ -0,0 +1,131 @@
/*
* Copyright 2010-2015 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.kotlin.modules
import com.intellij.openapi.util.io.FileUtil.toSystemIndependentName
import com.intellij.openapi.util.text.StringUtil.escapeXml
import org.jetbrains.kotlin.build.JvmSourceRoot
import org.jetbrains.kotlin.cli.common.modules.ModuleXmlParser.*
import org.jetbrains.kotlin.config.IncrementalCompilation
import org.jetbrains.kotlin.utils.Printer
import java.io.File
class KotlinModuleXmlBuilder {
private val xml = StringBuilder()
private val p = Printer(xml)
private var done = false
init {
openTag(p, MODULES)
}
fun addModule(
moduleName: String,
outputDir: String,
sourceFiles: Iterable<File>,
javaSourceRoots: Iterable<JvmSourceRoot>,
classpathRoots: Iterable<File>,
targetTypeId: String,
isTests: Boolean,
directoriesToFilterOut: Set<File>,
friendDirs: Iterable<File>): KotlinModuleXmlBuilder {
assert(!done) { "Already done" }
p.println("<!-- Module script for ${if (isTests) "tests" else "production"} -->")
p.println("<", MODULE, " ",
NAME, "=\"", escapeXml(moduleName), "\" ",
TYPE, "=\"", escapeXml(targetTypeId), "\" ",
OUTPUT_DIR, "=\"", getEscapedPath(File(outputDir)), "\">")
p.pushIndent()
for (friendDir in friendDirs) {
p.println("<", FRIEND_DIR, " ", PATH, "=\"", getEscapedPath(friendDir), "\"/>")
}
for (sourceFile in sourceFiles) {
p.println("<", SOURCES, " ", PATH, "=\"", getEscapedPath(sourceFile), "\"/>")
}
processJavaSourceRoots(javaSourceRoots)
processClasspath(classpathRoots, directoriesToFilterOut)
closeTag(p, MODULE)
return this
}
private fun processClasspath(
files: Iterable<File>,
directoriesToFilterOut: Set<File>) {
p.println("<!-- Classpath -->")
for (file in files) {
val isOutput = directoriesToFilterOut.contains(file) && !IncrementalCompilation.isEnabled()
if (isOutput) {
// For IDEA's make (incremental compilation) purposes, output directories of the current module and its dependencies
// appear on the class path, so we are at risk of seeing the results of the previous build, i.e. if some class was
// removed in the sources, it may still be there in binaries. Thus, we delete these entries from the classpath.
p.println("<!-- Output directory, commented out -->")
p.println("<!-- ")
p.pushIndent()
}
p.println("<", CLASSPATH, " ", PATH, "=\"", getEscapedPath(file), "\"/>")
if (isOutput) {
p.popIndent()
p.println("-->")
}
}
}
private fun processJavaSourceRoots(roots: Iterable<JvmSourceRoot>) {
p.println("<!-- Java source roots -->")
for (root in roots) {
p.print("<")
p.printWithNoIndent(JAVA_SOURCE_ROOTS, " ", PATH, "=\"", getEscapedPath(root.file), "\"")
if (root.packagePrefix != null) {
p.printWithNoIndent(" ", JAVA_SOURCE_PACKAGE_PREFIX, "=\"", root.packagePrefix, "\"")
}
p.printWithNoIndent("/>")
p.println()
}
}
fun asText(): CharSequence {
if (!done) {
closeTag(p, MODULES)
done = true
}
return xml
}
private fun openTag(p: Printer, tag: String) {
p.println("<$tag>")
p.pushIndent()
}
private fun closeTag(p: Printer, tag: String) {
p.popIndent()
p.println("</$tag>")
}
private fun getEscapedPath(sourceFile: File): String {
return escapeXml(toSystemIndependentName(sourceFile.path))
}
}

View File

@@ -0,0 +1,47 @@
/*
* Copyright 2010-2016 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.kotlin.incremental.testingUtils
import java.io.File
class BuildLogFinder(
private val isExperimentalEnabled: Boolean = false,
private val isDataContainerBuildLogEnabled: Boolean = false,
private val isGradleEnabled: Boolean = false
) {
companion object {
private const val GRADLE_LOG = "gradle-build.log"
private const val DATA_CONTAINER_LOG = "data-container-version-build.log"
private const val EXPERIMENTAL_LOG = "experimental-ic-build.log"
private const val SIMPLE_LOG = "build.log"
}
fun findBuildLog(dir: File): File? {
val names = dir.list() ?: arrayOf()
val files = names.filter { File(dir, it).isFile }.toSet()
val matchedName = when {
isGradleEnabled && GRADLE_LOG in files -> GRADLE_LOG
isDataContainerBuildLogEnabled && DATA_CONTAINER_LOG in files -> DATA_CONTAINER_LOG
isExperimentalEnabled && EXPERIMENTAL_LOG in files -> EXPERIMENTAL_LOG
SIMPLE_LOG in files -> SIMPLE_LOG
else -> null
}
return File(dir, matchedName ?: return null)
}
}

View File

@@ -0,0 +1,181 @@
/*
* Copyright 2010-2016 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.kotlin.incremental.testingUtils
import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.incremental.LocalFileKotlinClass
import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader
import org.jetbrains.kotlin.protobuf.ExtensionRegistry
import org.jetbrains.kotlin.serialization.DebugProtoBuf
import org.jetbrains.kotlin.serialization.jvm.BitEncoding
import org.jetbrains.kotlin.serialization.jvm.DebugJvmProtoBuf
import org.jetbrains.kotlin.utils.Printer
import org.jetbrains.org.objectweb.asm.ClassReader
import org.jetbrains.org.objectweb.asm.util.TraceClassVisitor
import org.junit.Assert
import org.junit.Assert.assertNotNull
import java.io.ByteArrayInputStream
import java.io.File
import java.io.PrintWriter
import java.io.StringWriter
import java.util.*
import java.util.zip.CRC32
import kotlin.comparisons.compareBy
// Set this to true if you want to dump all bytecode (test will fail in this case)
private val DUMP_ALL = System.getProperty("comparison.dump.all") == "true"
fun assertEqualDirectories(expected: File, actual: File, forgiveExtraFiles: Boolean) {
val pathsInExpected = getAllRelativePaths(expected)
val pathsInActual = getAllRelativePaths(actual)
val commonPaths = pathsInExpected.intersect(pathsInActual)
val changedPaths = commonPaths
.filter { DUMP_ALL || !Arrays.equals(File(expected, it).readBytes(), File(actual, it).readBytes()) }
.sorted()
val expectedString = getDirectoryString(expected, changedPaths)
val actualString = getDirectoryString(actual, changedPaths)
if (DUMP_ALL) {
Assert.assertEquals(expectedString, actualString + " ")
}
if (forgiveExtraFiles) {
// If compilation fails, output may be different for full rebuild and partial make. Parsing output (directory string) for simplicity.
if (changedPaths.isEmpty()) {
val expectedListingLines = expectedString.split('\n').toList()
val actualListingLines = actualString.split('\n').toList()
if (actualListingLines.containsAll(expectedListingLines)) {
return
}
}
}
Assert.assertEquals(expectedString, actualString)
}
private fun File.checksumString(): String {
val crc32 = CRC32()
crc32.update(this.readBytes())
return java.lang.Long.toHexString(crc32.value)
}
private fun getDirectoryString(dir: File, interestingPaths: List<String>): String {
val buf = StringBuilder()
val p = Printer(buf)
fun addDirContent(dir: File) {
p.pushIndent()
val listFiles = dir.listFiles()
assertNotNull("$dir does not exist", listFiles)
val children = listFiles!!.sortedWith(compareBy({ it.isDirectory }, { it.name }))
for (child in children) {
if (child.isDirectory) {
if ((child.list()?.isNotEmpty() ?: false)) {
p.println(child.name)
addDirContent(child)
}
}
else {
p.println(child.name, " ", child.checksumString())
}
}
p.popIndent()
}
p.println(".")
addDirContent(dir)
for (path in interestingPaths) {
p.println("================", path, "================")
p.println(fileToStringRepresentation(File(dir, path)))
p.println()
p.println()
}
return buf.toString()
}
private fun getAllRelativePaths(dir: File): Set<String> {
val result = HashSet<String>()
FileUtil.processFilesRecursively(dir) {
if (it!!.isFile) {
result.add(FileUtil.getRelativePath(dir, it)!!)
}
true
}
return result
}
private fun classFileToString(classFile: File): String {
val out = StringWriter()
val traceVisitor = TraceClassVisitor(PrintWriter(out))
ClassReader(classFile.readBytes()).accept(traceVisitor, 0)
val classHeader = LocalFileKotlinClass.create(classFile)?.classHeader
val annotationDataEncoded = classHeader?.data
if (annotationDataEncoded != null) {
ByteArrayInputStream(BitEncoding.decodeBytes(annotationDataEncoded)).use {
input ->
out.write("\n------ string table types proto -----\n${DebugJvmProtoBuf.StringTableTypes.parseDelimitedFrom(input)}")
if (!classHeader!!.metadataVersion.isCompatible()) {
error("Incompatible class ($classHeader): $classFile")
}
when (classHeader.kind) {
KotlinClassHeader.Kind.FILE_FACADE ->
out.write("\n------ file facade proto -----\n${DebugProtoBuf.Package.parseFrom(input, getExtensionRegistry())}")
KotlinClassHeader.Kind.CLASS ->
out.write("\n------ class proto -----\n${DebugProtoBuf.Class.parseFrom(input, getExtensionRegistry())}")
KotlinClassHeader.Kind.MULTIFILE_CLASS_PART ->
out.write("\n------ multi-file part proto -----\n${DebugProtoBuf.Package.parseFrom(input, getExtensionRegistry())}")
else -> throw IllegalStateException()
}
}
}
return out.toString()
}
private fun getExtensionRegistry(): ExtensionRegistry {
val registry = ExtensionRegistry.newInstance()!!
DebugJvmProtoBuf.registerAllExtensions(registry)
return registry
}
private fun fileToStringRepresentation(file: File): String {
return when {
file.name.endsWith(".class") -> {
classFileToString(file)
}
else -> {
file.readText()
}
}
}

View File

@@ -0,0 +1,181 @@
/*
* Copyright 2010-2016 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.kotlin.incremental.testingUtils
import com.intellij.openapi.util.io.FileUtil
import java.io.File
import java.util.*
private val COMMANDS = listOf("new", "touch", "delete")
private val COMMANDS_AS_REGEX_PART = COMMANDS.joinToString("|")
private val COMMANDS_AS_MESSAGE_PART = COMMANDS.joinToString("/") { "\".$it\"" }
enum class TouchPolicy {
TIMESTAMP,
CHECKSUM
}
fun copyTestSources(testDataDir: File, sourceDestinationDir: File, filePrefix: String): Map<File, File> {
val mapping = hashMapOf<File, File>()
FileUtil.copyDir(testDataDir, sourceDestinationDir) {
it.isDirectory || it.name.startsWith(filePrefix) && (it.name.endsWith(".kt") || it.name.endsWith(".java"))
}
for (file in sourceDestinationDir.walk()) {
if (!file.isFile) continue
val renamedFile =
if (filePrefix.isEmpty()) {
file
}
else {
File(sourceDestinationDir, file.name.removePrefix(filePrefix)).apply {
file.renameTo(this)
}
}
mapping[renamedFile] = File(testDataDir, file.name)
}
return mapping
}
fun getModificationsToPerform(
testDataDir: File,
moduleNames: Collection<String>?,
allowNoFilesWithSuffixInTestData: Boolean,
touchPolicy: TouchPolicy
): List<List<Modification>> {
fun getModificationsForIteration(newSuffix: String, touchSuffix: String, deleteSuffix: String): List<Modification> {
fun splitToModuleNameAndFileName(fileName: String): Pair<String?, String> {
val underscore = fileName.indexOf("_")
if (underscore != -1) {
val module = fileName.substring(0, underscore)
assert(moduleNames != null) { "File name has module prefix, but multi-module environment is absent" }
assert(module in moduleNames!!) { "Module not found for file with prefix: $fileName" }
return Pair(module, fileName.substring(underscore + 1))
}
assert(moduleNames == null) { "Test is multi-module, but file has no module prefix: $fileName" }
return Pair(null, fileName)
}
val rules = mapOf<String, (String, File) -> Modification>(
newSuffix to { path, file -> ModifyContent(path, file) },
touchSuffix to { path, file -> TouchFile(path, touchPolicy) },
deleteSuffix to { path, file -> DeleteFile(path) }
)
val modifications = ArrayList<Modification>()
for (file in testDataDir.walkTopDown()) {
if (!file.isFile) continue
val relativeFilePath = file.toRelativeString(testDataDir)
val (suffix, createModification) = rules.entries.firstOrNull { file.path.endsWith(it.key) } ?: continue
val (moduleName, fileName) = splitToModuleNameAndFileName(relativeFilePath)
val srcDir = moduleName?.let { "$it/src" } ?: "src"
modifications.add(createModification(srcDir + "/" + fileName.removeSuffix(suffix), file))
}
return modifications
}
val haveFilesWithoutNumbers = testDataDir.walkTopDown().any { it.name.matches(".+\\.($COMMANDS_AS_REGEX_PART)$".toRegex()) }
val haveFilesWithNumbers = testDataDir.walkTopDown().any { it.name.matches(".+\\.($COMMANDS_AS_REGEX_PART)\\.\\d+$".toRegex()) }
if (haveFilesWithoutNumbers && haveFilesWithNumbers) {
throw IllegalStateException("Bad test data format: files ending with both unnumbered and numbered ${COMMANDS_AS_MESSAGE_PART} were found")
}
if (!haveFilesWithoutNumbers && !haveFilesWithNumbers) {
if (allowNoFilesWithSuffixInTestData) {
return listOf(listOf())
}
else {
throw IllegalStateException("Bad test data format: no files ending with ${COMMANDS_AS_MESSAGE_PART} found")
}
}
if (haveFilesWithoutNumbers) {
return listOf(getModificationsForIteration(".new", ".touch", ".delete"))
}
else {
return (1..10)
.map { getModificationsForIteration(".new.$it", ".touch.$it", ".delete.$it") }
.filter { it.isNotEmpty() }
}
}
abstract class Modification(val path: String) {
abstract fun perform(workDir: File, mapping: MutableMap<File, File>)
override fun toString(): String = "${javaClass.simpleName} $path"
}
class ModifyContent(path: String, val dataFile: File) : Modification(path) {
override fun perform(workDir: File, mapping: MutableMap<File, File>) {
val file = File(workDir, path)
val oldLastModified = file.lastModified()
file.delete()
dataFile.copyTo(file)
val newLastModified = file.lastModified()
if (newLastModified <= oldLastModified) {
//Mac OS and some versions of Linux truncate timestamp to nearest second
file.setLastModified(oldLastModified + 1000)
}
mapping[file] = dataFile
}
}
class TouchFile(path: String, private val touchPolicy: TouchPolicy) : Modification(path) {
override fun perform(workDir: File, mapping: MutableMap<File, File>) {
val file = File(workDir, path)
when (touchPolicy) {
TouchPolicy.TIMESTAMP -> {
val oldLastModified = file.lastModified()
//Mac OS and some versions of Linux truncate timestamp to nearest second
file.setLastModified(Math.max(System.currentTimeMillis(), oldLastModified + 1000))
}
TouchPolicy.CHECKSUM -> {
file.appendText(" ")
}
}
}
}
class DeleteFile(path: String) : Modification(path) {
override fun perform(workDir: File, mapping: MutableMap<File, File>) {
val fileToDelete = File(workDir, path)
if (!fileToDelete.delete()) {
throw AssertionError("Couldn't delete $fileToDelete")
}
mapping.remove(fileToDelete)
}
}

View File

@@ -0,0 +1,100 @@
// Generated by the protocol buffer compiler. DO NOT EDIT!
// source: core/deserialization/src/ext_options.debug.proto
package org.jetbrains.kotlin.serialization;
public final class DebugExtOptionsProtoBuf {
private DebugExtOptionsProtoBuf() {}
public static void registerAllExtensions(
org.jetbrains.kotlin.protobuf.ExtensionRegistry registry) {
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.skipInComparison);
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.nameIdInTable);
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.fqNameIdInTable);
registry.add(org.jetbrains.kotlin.serialization.DebugExtOptionsProtoBuf.stringIdInTable);
}
public static final int SKIP_IN_COMPARISON_FIELD_NUMBER = 50000;
/**
* <code>extend .google.protobuf.FieldOptions { ... }</code>
*/
public static final
org.jetbrains.kotlin.protobuf.GeneratedMessage.GeneratedExtension<
org.jetbrains.kotlin.protobuf.DescriptorProtos.FieldOptions,
java.lang.Boolean> skipInComparison = org.jetbrains.kotlin.protobuf.GeneratedMessage
.newFileScopedGeneratedExtension(
java.lang.Boolean.class,
null);
public static final int NAME_ID_IN_TABLE_FIELD_NUMBER = 50001;
/**
* <code>extend .google.protobuf.FieldOptions { ... }</code>
*/
public static final
org.jetbrains.kotlin.protobuf.GeneratedMessage.GeneratedExtension<
org.jetbrains.kotlin.protobuf.DescriptorProtos.FieldOptions,
java.lang.Boolean> nameIdInTable = org.jetbrains.kotlin.protobuf.GeneratedMessage
.newFileScopedGeneratedExtension(
java.lang.Boolean.class,
null);
public static final int FQ_NAME_ID_IN_TABLE_FIELD_NUMBER = 50002;
/**
* <code>extend .google.protobuf.FieldOptions { ... }</code>
*/
public static final
org.jetbrains.kotlin.protobuf.GeneratedMessage.GeneratedExtension<
org.jetbrains.kotlin.protobuf.DescriptorProtos.FieldOptions,
java.lang.Boolean> fqNameIdInTable = org.jetbrains.kotlin.protobuf.GeneratedMessage
.newFileScopedGeneratedExtension(
java.lang.Boolean.class,
null);
public static final int STRING_ID_IN_TABLE_FIELD_NUMBER = 50003;
/**
* <code>extend .google.protobuf.FieldOptions { ... }</code>
*/
public static final
org.jetbrains.kotlin.protobuf.GeneratedMessage.GeneratedExtension<
org.jetbrains.kotlin.protobuf.DescriptorProtos.FieldOptions,
java.lang.Boolean> stringIdInTable = org.jetbrains.kotlin.protobuf.GeneratedMessage
.newFileScopedGeneratedExtension(
java.lang.Boolean.class,
null);
public static org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor
getDescriptor() {
return descriptor;
}
private static org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor
descriptor;
static {
java.lang.String[] descriptorData = {
"\n0core/deserialization/src/ext_options.d" +
"ebug.proto\022\"org.jetbrains.kotlin.seriali" +
"zation\032 google/protobuf/descriptor.proto" +
":;\n\022skip_in_comparison\022\035.google.protobuf" +
".FieldOptions\030\320\206\003 \001(\010:9\n\020name_id_in_tabl" +
"e\022\035.google.protobuf.FieldOptions\030\321\206\003 \001(\010" +
":<\n\023fq_name_id_in_table\022\035.google.protobu" +
"f.FieldOptions\030\322\206\003 \001(\010:;\n\022string_id_in_t" +
"able\022\035.google.protobuf.FieldOptions\030\323\206\003 " +
"\001(\010B\031B\027DebugExtOptionsProtoBuf"
};
org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
public org.jetbrains.kotlin.protobuf.ExtensionRegistry assignDescriptors(
org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor root) {
descriptor = root;
return null;
}
};
org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor[] {
org.jetbrains.kotlin.protobuf.DescriptorProtos.getDescriptor(),
}, assigner);
skipInComparison.internalInit(descriptor.getExtensions().get(0));
nameIdInTable.internalInit(descriptor.getExtensions().get(1));
fqNameIdInTable.internalInit(descriptor.getExtensions().get(2));
stringIdInTable.internalInit(descriptor.getExtensions().get(3));
org.jetbrains.kotlin.protobuf.DescriptorProtos.getDescriptor();
}
// @@protoc_insertion_point(outer_class_scope)
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -6,12 +6,12 @@ package org.jetbrains.kotlin.serialization.jvm;
public final class DebugJvmPackageTable {
private DebugJvmPackageTable() {}
public static void registerAllExtensions(
com.google.protobuf.ExtensionRegistry registry) {
org.jetbrains.kotlin.protobuf.ExtensionRegistry registry) {
}
public interface PackageTableOrBuilder
extends com.google.protobuf.MessageOrBuilder {
public interface PackageTableOrBuilder extends
// @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.jvm.PackageTable)
org.jetbrains.kotlin.protobuf.MessageOrBuilder {
// repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1;
/**
* <code>repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1;</code>
*/
@@ -40,14 +40,15 @@ public final class DebugJvmPackageTable {
* Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageTable}
*/
public static final class PackageTable extends
com.google.protobuf.GeneratedMessage
implements PackageTableOrBuilder {
org.jetbrains.kotlin.protobuf.GeneratedMessage implements
// @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.jvm.PackageTable)
PackageTableOrBuilder {
// Use PackageTable.newBuilder() to construct.
private PackageTable(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
private PackageTable(org.jetbrains.kotlin.protobuf.GeneratedMessage.Builder<?> builder) {
super(builder);
this.unknownFields = builder.getUnknownFields();
}
private PackageTable(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
private PackageTable(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.UnknownFieldSet.getDefaultInstance(); }
private static final PackageTable defaultInstance;
public static PackageTable getDefaultInstance() {
@@ -58,20 +59,20 @@ public final class DebugJvmPackageTable {
return defaultInstance;
}
private final com.google.protobuf.UnknownFieldSet unknownFields;
private final org.jetbrains.kotlin.protobuf.UnknownFieldSet unknownFields;
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
public final org.jetbrains.kotlin.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private PackageTable(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
initFields();
int mutable_bitField0_ = 0;
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder();
org.jetbrains.kotlin.protobuf.UnknownFieldSet.Builder unknownFields =
org.jetbrains.kotlin.protobuf.UnknownFieldSet.newBuilder();
try {
boolean done = false;
while (!done) {
@@ -97,10 +98,10 @@ public final class DebugJvmPackageTable {
}
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
throw e.setUnfinishedMessage(this);
} catch (java.io.IOException e) {
throw new com.google.protobuf.InvalidProtocolBufferException(
throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
e.getMessage()).setUnfinishedMessage(this);
} finally {
if (((mutable_bitField0_ & 0x00000001) == 0x00000001)) {
@@ -110,34 +111,33 @@ public final class DebugJvmPackageTable {
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
public static final org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
protected org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_fieldAccessorTable
.ensureFieldAccessorsInitialized(
org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable.class, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable.Builder.class);
}
public static com.google.protobuf.Parser<PackageTable> PARSER =
new com.google.protobuf.AbstractParser<PackageTable>() {
public static org.jetbrains.kotlin.protobuf.Parser<PackageTable> PARSER =
new org.jetbrains.kotlin.protobuf.AbstractParser<PackageTable>() {
public PackageTable parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return new PackageTable(input, extensionRegistry);
}
};
@java.lang.Override
public com.google.protobuf.Parser<PackageTable> getParserForType() {
public org.jetbrains.kotlin.protobuf.Parser<PackageTable> getParserForType() {
return PARSER;
}
// repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1;
public static final int PACKAGE_PARTS_FIELD_NUMBER = 1;
private java.util.List<org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts> packageParts_;
/**
@@ -179,7 +179,8 @@ public final class DebugJvmPackageTable {
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized != -1) return isInitialized == 1;
if (isInitialized == 1) return true;
if (isInitialized == 0) return false;
for (int i = 0; i < getPackagePartsCount(); i++) {
if (!getPackageParts(i).isInitialized()) {
@@ -191,7 +192,7 @@ public final class DebugJvmPackageTable {
return true;
}
public void writeTo(com.google.protobuf.CodedOutputStream output)
public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
for (int i = 0; i < packageParts_.size(); i++) {
@@ -207,7 +208,7 @@ public final class DebugJvmPackageTable {
size = 0;
for (int i = 0; i < packageParts_.size(); i++) {
size += com.google.protobuf.CodedOutputStream
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
.computeMessageSize(1, packageParts_.get(i));
}
size += getUnknownFields().getSerializedSize();
@@ -223,24 +224,24 @@ public final class DebugJvmPackageTable {
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
org.jetbrains.kotlin.protobuf.ByteString data)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
org.jetbrains.kotlin.protobuf.ByteString data,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom(java.io.InputStream input)
@@ -249,7 +250,7 @@ public final class DebugJvmPackageTable {
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
@@ -259,18 +260,18 @@ public final class DebugJvmPackageTable {
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input, extensionRegistry);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom(
com.google.protobuf.CodedInputStream input)
org.jetbrains.kotlin.protobuf.CodedInputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
@@ -284,7 +285,7 @@ public final class DebugJvmPackageTable {
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
org.jetbrains.kotlin.protobuf.GeneratedMessage.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
@@ -292,14 +293,15 @@ public final class DebugJvmPackageTable {
* Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageTable}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder>
implements org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTableOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
org.jetbrains.kotlin.protobuf.GeneratedMessage.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.jvm.PackageTable)
org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTableOrBuilder {
public static final org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
protected org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_fieldAccessorTable
.ensureFieldAccessorsInitialized(
@@ -312,12 +314,12 @@ public final class DebugJvmPackageTable {
}
private Builder(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
org.jetbrains.kotlin.protobuf.GeneratedMessage.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
if (org.jetbrains.kotlin.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
getPackagePartsFieldBuilder();
}
}
@@ -340,7 +342,7 @@ public final class DebugJvmPackageTable {
return create().mergeFrom(buildPartial());
}
public com.google.protobuf.Descriptors.Descriptor
public org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor;
}
@@ -373,7 +375,7 @@ public final class DebugJvmPackageTable {
return result;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
public Builder mergeFrom(org.jetbrains.kotlin.protobuf.Message other) {
if (other instanceof org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable) {
return mergeFrom((org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable)other);
} else {
@@ -403,7 +405,7 @@ public final class DebugJvmPackageTable {
packageParts_ = other.packageParts_;
bitField0_ = (bitField0_ & ~0x00000001);
packagePartsBuilder_ =
com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
org.jetbrains.kotlin.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
getPackagePartsFieldBuilder() : null;
} else {
packagePartsBuilder_.addAllMessages(other.packageParts_);
@@ -425,13 +427,13 @@ public final class DebugJvmPackageTable {
}
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageTable) e.getUnfinishedMessage();
throw e;
} finally {
@@ -443,7 +445,6 @@ public final class DebugJvmPackageTable {
}
private int bitField0_;
// repeated .org.jetbrains.kotlin.serialization.jvm.PackageParts package_parts = 1;
private java.util.List<org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts> packageParts_ =
java.util.Collections.emptyList();
private void ensurePackagePartsIsMutable() {
@@ -453,7 +454,7 @@ public final class DebugJvmPackageTable {
}
}
private com.google.protobuf.RepeatedFieldBuilder<
private org.jetbrains.kotlin.protobuf.RepeatedFieldBuilder<
org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder> packagePartsBuilder_;
/**
@@ -585,7 +586,8 @@ public final class DebugJvmPackageTable {
java.lang.Iterable<? extends org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts> values) {
if (packagePartsBuilder_ == null) {
ensurePackagePartsIsMutable();
super.addAll(values, packageParts_);
org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
values, packageParts_);
onChanged();
} else {
packagePartsBuilder_.addAllMessages(values);
@@ -668,11 +670,11 @@ public final class DebugJvmPackageTable {
getPackagePartsBuilderList() {
return getPackagePartsFieldBuilder().getBuilderList();
}
private com.google.protobuf.RepeatedFieldBuilder<
private org.jetbrains.kotlin.protobuf.RepeatedFieldBuilder<
org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder>
getPackagePartsFieldBuilder() {
if (packagePartsBuilder_ == null) {
packagePartsBuilder_ = new com.google.protobuf.RepeatedFieldBuilder<
packagePartsBuilder_ = new org.jetbrains.kotlin.protobuf.RepeatedFieldBuilder<
org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder>(
packageParts_,
((bitField0_ & 0x00000001) == 0x00000001),
@@ -694,10 +696,10 @@ public final class DebugJvmPackageTable {
// @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.jvm.PackageTable)
}
public interface PackagePartsOrBuilder
extends com.google.protobuf.MessageOrBuilder {
public interface PackagePartsOrBuilder extends
// @@protoc_insertion_point(interface_extends:org.jetbrains.kotlin.serialization.jvm.PackageParts)
org.jetbrains.kotlin.protobuf.MessageOrBuilder {
// required string package_fq_name = 1;
/**
* <code>required string package_fq_name = 1;</code>
*/
@@ -709,15 +711,14 @@ public final class DebugJvmPackageTable {
/**
* <code>required string package_fq_name = 1;</code>
*/
com.google.protobuf.ByteString
org.jetbrains.kotlin.protobuf.ByteString
getPackageFqNameBytes();
// repeated string class_name = 2;
/**
* <code>repeated string class_name = 2;</code>
*/
java.util.List<java.lang.String>
getClassNameList();
org.jetbrains.kotlin.protobuf.ProtocolStringList
getClassNameList();
/**
* <code>repeated string class_name = 2;</code>
*/
@@ -729,21 +730,22 @@ public final class DebugJvmPackageTable {
/**
* <code>repeated string class_name = 2;</code>
*/
com.google.protobuf.ByteString
org.jetbrains.kotlin.protobuf.ByteString
getClassNameBytes(int index);
}
/**
* Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageParts}
*/
public static final class PackageParts extends
com.google.protobuf.GeneratedMessage
implements PackagePartsOrBuilder {
org.jetbrains.kotlin.protobuf.GeneratedMessage implements
// @@protoc_insertion_point(message_implements:org.jetbrains.kotlin.serialization.jvm.PackageParts)
PackagePartsOrBuilder {
// Use PackageParts.newBuilder() to construct.
private PackageParts(com.google.protobuf.GeneratedMessage.Builder<?> builder) {
private PackageParts(org.jetbrains.kotlin.protobuf.GeneratedMessage.Builder<?> builder) {
super(builder);
this.unknownFields = builder.getUnknownFields();
}
private PackageParts(boolean noInit) { this.unknownFields = com.google.protobuf.UnknownFieldSet.getDefaultInstance(); }
private PackageParts(boolean noInit) { this.unknownFields = org.jetbrains.kotlin.protobuf.UnknownFieldSet.getDefaultInstance(); }
private static final PackageParts defaultInstance;
public static PackageParts getDefaultInstance() {
@@ -754,20 +756,20 @@ public final class DebugJvmPackageTable {
return defaultInstance;
}
private final com.google.protobuf.UnknownFieldSet unknownFields;
private final org.jetbrains.kotlin.protobuf.UnknownFieldSet unknownFields;
@java.lang.Override
public final com.google.protobuf.UnknownFieldSet
public final org.jetbrains.kotlin.protobuf.UnknownFieldSet
getUnknownFields() {
return this.unknownFields;
}
private PackageParts(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
initFields();
int mutable_bitField0_ = 0;
com.google.protobuf.UnknownFieldSet.Builder unknownFields =
com.google.protobuf.UnknownFieldSet.newBuilder();
org.jetbrains.kotlin.protobuf.UnknownFieldSet.Builder unknownFields =
org.jetbrains.kotlin.protobuf.UnknownFieldSet.newBuilder();
try {
boolean done = false;
while (!done) {
@@ -784,62 +786,63 @@ public final class DebugJvmPackageTable {
break;
}
case 10: {
org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
bitField0_ |= 0x00000001;
packageFqName_ = input.readBytes();
packageFqName_ = bs;
break;
}
case 18: {
org.jetbrains.kotlin.protobuf.ByteString bs = input.readBytes();
if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
className_ = new com.google.protobuf.LazyStringArrayList();
className_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList();
mutable_bitField0_ |= 0x00000002;
}
className_.add(input.readBytes());
className_.add(bs);
break;
}
}
}
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
throw e.setUnfinishedMessage(this);
} catch (java.io.IOException e) {
throw new com.google.protobuf.InvalidProtocolBufferException(
throw new org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException(
e.getMessage()).setUnfinishedMessage(this);
} finally {
if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
className_ = new com.google.protobuf.UnmodifiableLazyStringList(className_);
className_ = className_.getUnmodifiableView();
}
this.unknownFields = unknownFields.build();
makeExtensionsImmutable();
}
}
public static final com.google.protobuf.Descriptors.Descriptor
public static final org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
protected org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_fieldAccessorTable
.ensureFieldAccessorsInitialized(
org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.class, org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts.Builder.class);
}
public static com.google.protobuf.Parser<PackageParts> PARSER =
new com.google.protobuf.AbstractParser<PackageParts>() {
public static org.jetbrains.kotlin.protobuf.Parser<PackageParts> PARSER =
new org.jetbrains.kotlin.protobuf.AbstractParser<PackageParts>() {
public PackageParts parsePartialFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return new PackageParts(input, extensionRegistry);
}
};
@java.lang.Override
public com.google.protobuf.Parser<PackageParts> getParserForType() {
public org.jetbrains.kotlin.protobuf.Parser<PackageParts> getParserForType() {
return PARSER;
}
private int bitField0_;
// required string package_fq_name = 1;
public static final int PACKAGE_FQ_NAME_FIELD_NUMBER = 1;
private java.lang.Object packageFqName_;
/**
@@ -856,8 +859,8 @@ public final class DebugJvmPackageTable {
if (ref instanceof java.lang.String) {
return (java.lang.String) ref;
} else {
com.google.protobuf.ByteString bs =
(com.google.protobuf.ByteString) ref;
org.jetbrains.kotlin.protobuf.ByteString bs =
(org.jetbrains.kotlin.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
if (bs.isValidUtf8()) {
packageFqName_ = s;
@@ -868,27 +871,26 @@ public final class DebugJvmPackageTable {
/**
* <code>required string package_fq_name = 1;</code>
*/
public com.google.protobuf.ByteString
public org.jetbrains.kotlin.protobuf.ByteString
getPackageFqNameBytes() {
java.lang.Object ref = packageFqName_;
if (ref instanceof java.lang.String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
org.jetbrains.kotlin.protobuf.ByteString b =
org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
packageFqName_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
return (org.jetbrains.kotlin.protobuf.ByteString) ref;
}
}
// repeated string class_name = 2;
public static final int CLASS_NAME_FIELD_NUMBER = 2;
private com.google.protobuf.LazyStringList className_;
private org.jetbrains.kotlin.protobuf.LazyStringList className_;
/**
* <code>repeated string class_name = 2;</code>
*/
public java.util.List<java.lang.String>
public org.jetbrains.kotlin.protobuf.ProtocolStringList
getClassNameList() {
return className_;
}
@@ -907,19 +909,20 @@ public final class DebugJvmPackageTable {
/**
* <code>repeated string class_name = 2;</code>
*/
public com.google.protobuf.ByteString
public org.jetbrains.kotlin.protobuf.ByteString
getClassNameBytes(int index) {
return className_.getByteString(index);
}
private void initFields() {
packageFqName_ = "";
className_ = com.google.protobuf.LazyStringArrayList.EMPTY;
className_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
}
private byte memoizedIsInitialized = -1;
public final boolean isInitialized() {
byte isInitialized = memoizedIsInitialized;
if (isInitialized != -1) return isInitialized == 1;
if (isInitialized == 1) return true;
if (isInitialized == 0) return false;
if (!hasPackageFqName()) {
memoizedIsInitialized = 0;
@@ -929,7 +932,7 @@ public final class DebugJvmPackageTable {
return true;
}
public void writeTo(com.google.protobuf.CodedOutputStream output)
public void writeTo(org.jetbrains.kotlin.protobuf.CodedOutputStream output)
throws java.io.IOException {
getSerializedSize();
if (((bitField0_ & 0x00000001) == 0x00000001)) {
@@ -948,13 +951,13 @@ public final class DebugJvmPackageTable {
size = 0;
if (((bitField0_ & 0x00000001) == 0x00000001)) {
size += com.google.protobuf.CodedOutputStream
size += org.jetbrains.kotlin.protobuf.CodedOutputStream
.computeBytesSize(1, getPackageFqNameBytes());
}
{
int dataSize = 0;
for (int i = 0; i < className_.size(); i++) {
dataSize += com.google.protobuf.CodedOutputStream
dataSize += org.jetbrains.kotlin.protobuf.CodedOutputStream
.computeBytesSizeNoTag(className_.getByteString(i));
}
size += dataSize;
@@ -973,24 +976,24 @@ public final class DebugJvmPackageTable {
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom(
com.google.protobuf.ByteString data)
throws com.google.protobuf.InvalidProtocolBufferException {
org.jetbrains.kotlin.protobuf.ByteString data)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom(
com.google.protobuf.ByteString data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
org.jetbrains.kotlin.protobuf.ByteString data,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom(byte[] data)
throws com.google.protobuf.InvalidProtocolBufferException {
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom(
byte[] data,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
throws com.google.protobuf.InvalidProtocolBufferException {
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException {
return PARSER.parseFrom(data, extensionRegistry);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom(java.io.InputStream input)
@@ -999,7 +1002,7 @@ public final class DebugJvmPackageTable {
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
@@ -1009,18 +1012,18 @@ public final class DebugJvmPackageTable {
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseDelimitedFrom(
java.io.InputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseDelimitedFrom(input, extensionRegistry);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom(
com.google.protobuf.CodedInputStream input)
org.jetbrains.kotlin.protobuf.CodedInputStream input)
throws java.io.IOException {
return PARSER.parseFrom(input);
}
public static org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parseFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
return PARSER.parseFrom(input, extensionRegistry);
}
@@ -1034,7 +1037,7 @@ public final class DebugJvmPackageTable {
@java.lang.Override
protected Builder newBuilderForType(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
org.jetbrains.kotlin.protobuf.GeneratedMessage.BuilderParent parent) {
Builder builder = new Builder(parent);
return builder;
}
@@ -1042,14 +1045,15 @@ public final class DebugJvmPackageTable {
* Protobuf type {@code org.jetbrains.kotlin.serialization.jvm.PackageParts}
*/
public static final class Builder extends
com.google.protobuf.GeneratedMessage.Builder<Builder>
implements org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder {
public static final com.google.protobuf.Descriptors.Descriptor
org.jetbrains.kotlin.protobuf.GeneratedMessage.Builder<Builder> implements
// @@protoc_insertion_point(builder_implements:org.jetbrains.kotlin.serialization.jvm.PackageParts)
org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackagePartsOrBuilder {
public static final org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
getDescriptor() {
return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor;
}
protected com.google.protobuf.GeneratedMessage.FieldAccessorTable
protected org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable
internalGetFieldAccessorTable() {
return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_fieldAccessorTable
.ensureFieldAccessorsInitialized(
@@ -1062,12 +1066,12 @@ public final class DebugJvmPackageTable {
}
private Builder(
com.google.protobuf.GeneratedMessage.BuilderParent parent) {
org.jetbrains.kotlin.protobuf.GeneratedMessage.BuilderParent parent) {
super(parent);
maybeForceBuilderInitialization();
}
private void maybeForceBuilderInitialization() {
if (com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
if (org.jetbrains.kotlin.protobuf.GeneratedMessage.alwaysUseFieldBuilders) {
}
}
private static Builder create() {
@@ -1078,7 +1082,7 @@ public final class DebugJvmPackageTable {
super.clear();
packageFqName_ = "";
bitField0_ = (bitField0_ & ~0x00000001);
className_ = com.google.protobuf.LazyStringArrayList.EMPTY;
className_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
bitField0_ = (bitField0_ & ~0x00000002);
return this;
}
@@ -1087,7 +1091,7 @@ public final class DebugJvmPackageTable {
return create().mergeFrom(buildPartial());
}
public com.google.protobuf.Descriptors.Descriptor
public org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
getDescriptorForType() {
return org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor;
}
@@ -1113,8 +1117,7 @@ public final class DebugJvmPackageTable {
}
result.packageFqName_ = packageFqName_;
if (((bitField0_ & 0x00000002) == 0x00000002)) {
className_ = new com.google.protobuf.UnmodifiableLazyStringList(
className_);
className_ = className_.getUnmodifiableView();
bitField0_ = (bitField0_ & ~0x00000002);
}
result.className_ = className_;
@@ -1123,7 +1126,7 @@ public final class DebugJvmPackageTable {
return result;
}
public Builder mergeFrom(com.google.protobuf.Message other) {
public Builder mergeFrom(org.jetbrains.kotlin.protobuf.Message other) {
if (other instanceof org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts) {
return mergeFrom((org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts)other);
} else {
@@ -1162,13 +1165,13 @@ public final class DebugJvmPackageTable {
}
public Builder mergeFrom(
com.google.protobuf.CodedInputStream input,
com.google.protobuf.ExtensionRegistryLite extensionRegistry)
org.jetbrains.kotlin.protobuf.CodedInputStream input,
org.jetbrains.kotlin.protobuf.ExtensionRegistryLite extensionRegistry)
throws java.io.IOException {
org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts parsedMessage = null;
try {
parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
} catch (com.google.protobuf.InvalidProtocolBufferException e) {
} catch (org.jetbrains.kotlin.protobuf.InvalidProtocolBufferException e) {
parsedMessage = (org.jetbrains.kotlin.serialization.jvm.DebugJvmPackageTable.PackageParts) e.getUnfinishedMessage();
throw e;
} finally {
@@ -1180,7 +1183,6 @@ public final class DebugJvmPackageTable {
}
private int bitField0_;
// required string package_fq_name = 1;
private java.lang.Object packageFqName_ = "";
/**
* <code>required string package_fq_name = 1;</code>
@@ -1194,9 +1196,12 @@ public final class DebugJvmPackageTable {
public java.lang.String getPackageFqName() {
java.lang.Object ref = packageFqName_;
if (!(ref instanceof java.lang.String)) {
java.lang.String s = ((com.google.protobuf.ByteString) ref)
.toStringUtf8();
packageFqName_ = s;
org.jetbrains.kotlin.protobuf.ByteString bs =
(org.jetbrains.kotlin.protobuf.ByteString) ref;
java.lang.String s = bs.toStringUtf8();
if (bs.isValidUtf8()) {
packageFqName_ = s;
}
return s;
} else {
return (java.lang.String) ref;
@@ -1205,17 +1210,17 @@ public final class DebugJvmPackageTable {
/**
* <code>required string package_fq_name = 1;</code>
*/
public com.google.protobuf.ByteString
public org.jetbrains.kotlin.protobuf.ByteString
getPackageFqNameBytes() {
java.lang.Object ref = packageFqName_;
if (ref instanceof String) {
com.google.protobuf.ByteString b =
com.google.protobuf.ByteString.copyFromUtf8(
org.jetbrains.kotlin.protobuf.ByteString b =
org.jetbrains.kotlin.protobuf.ByteString.copyFromUtf8(
(java.lang.String) ref);
packageFqName_ = b;
return b;
} else {
return (com.google.protobuf.ByteString) ref;
return (org.jetbrains.kotlin.protobuf.ByteString) ref;
}
}
/**
@@ -1244,7 +1249,7 @@ public final class DebugJvmPackageTable {
* <code>required string package_fq_name = 1;</code>
*/
public Builder setPackageFqNameBytes(
com.google.protobuf.ByteString value) {
org.jetbrains.kotlin.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
@@ -1254,20 +1259,19 @@ public final class DebugJvmPackageTable {
return this;
}
// repeated string class_name = 2;
private com.google.protobuf.LazyStringList className_ = com.google.protobuf.LazyStringArrayList.EMPTY;
private org.jetbrains.kotlin.protobuf.LazyStringList className_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
private void ensureClassNameIsMutable() {
if (!((bitField0_ & 0x00000002) == 0x00000002)) {
className_ = new com.google.protobuf.LazyStringArrayList(className_);
className_ = new org.jetbrains.kotlin.protobuf.LazyStringArrayList(className_);
bitField0_ |= 0x00000002;
}
}
/**
* <code>repeated string class_name = 2;</code>
*/
public java.util.List<java.lang.String>
public org.jetbrains.kotlin.protobuf.ProtocolStringList
getClassNameList() {
return java.util.Collections.unmodifiableList(className_);
return className_.getUnmodifiableView();
}
/**
* <code>repeated string class_name = 2;</code>
@@ -1284,7 +1288,7 @@ public final class DebugJvmPackageTable {
/**
* <code>repeated string class_name = 2;</code>
*/
public com.google.protobuf.ByteString
public org.jetbrains.kotlin.protobuf.ByteString
getClassNameBytes(int index) {
return className_.getByteString(index);
}
@@ -1320,7 +1324,8 @@ public final class DebugJvmPackageTable {
public Builder addAllClassName(
java.lang.Iterable<java.lang.String> values) {
ensureClassNameIsMutable();
super.addAll(values, className_);
org.jetbrains.kotlin.protobuf.AbstractMessageLite.Builder.addAll(
values, className_);
onChanged();
return this;
}
@@ -1328,7 +1333,7 @@ public final class DebugJvmPackageTable {
* <code>repeated string class_name = 2;</code>
*/
public Builder clearClassName() {
className_ = com.google.protobuf.LazyStringArrayList.EMPTY;
className_ = org.jetbrains.kotlin.protobuf.LazyStringArrayList.EMPTY;
bitField0_ = (bitField0_ & ~0x00000002);
onChanged();
return this;
@@ -1337,7 +1342,7 @@ public final class DebugJvmPackageTable {
* <code>repeated string class_name = 2;</code>
*/
public Builder addClassNameBytes(
com.google.protobuf.ByteString value) {
org.jetbrains.kotlin.protobuf.ByteString value) {
if (value == null) {
throw new NullPointerException();
}
@@ -1358,22 +1363,22 @@ public final class DebugJvmPackageTable {
// @@protoc_insertion_point(class_scope:org.jetbrains.kotlin.serialization.jvm.PackageParts)
}
private static com.google.protobuf.Descriptors.Descriptor
private static final org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_fieldAccessorTable;
private static com.google.protobuf.Descriptors.Descriptor
private static final org.jetbrains.kotlin.protobuf.Descriptors.Descriptor
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor;
private static
com.google.protobuf.GeneratedMessage.FieldAccessorTable
org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_fieldAccessorTable;
public static com.google.protobuf.Descriptors.FileDescriptor
public static org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor
getDescriptor() {
return descriptor;
}
private static com.google.protobuf.Descriptors.FileDescriptor
private static org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor
descriptor;
static {
java.lang.String[] descriptorData = {
@@ -1386,31 +1391,31 @@ public final class DebugJvmPackageTable {
"\nclass_name\030\002 \003(\tB\026B\024DebugJvmPackageTabl" +
"e"
};
com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() {
public com.google.protobuf.ExtensionRegistry assignDescriptors(
com.google.protobuf.Descriptors.FileDescriptor root) {
descriptor = root;
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor =
getDescriptor().getMessageTypes().get(0);
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor,
new java.lang.String[] { "PackageParts", });
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_fieldAccessorTable = new
com.google.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor,
new java.lang.String[] { "PackageFqName", "ClassName", });
return null;
}
};
com.google.protobuf.Descriptors.FileDescriptor
org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
public org.jetbrains.kotlin.protobuf.ExtensionRegistry assignDescriptors(
org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor root) {
descriptor = root;
return null;
}
};
org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor
.internalBuildGeneratedFileFrom(descriptorData,
new com.google.protobuf.Descriptors.FileDescriptor[] {
new org.jetbrains.kotlin.protobuf.Descriptors.FileDescriptor[] {
}, assigner);
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor =
getDescriptor().getMessageTypes().get(0);
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_fieldAccessorTable = new
org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageTable_descriptor,
new java.lang.String[] { "PackageParts", });
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_fieldAccessorTable = new
org.jetbrains.kotlin.protobuf.GeneratedMessage.FieldAccessorTable(
internal_static_org_jetbrains_kotlin_serialization_jvm_PackageParts_descriptor,
new java.lang.String[] { "PackageFqName", "ClassName", });
}
// @@protoc_insertion_point(outer_class_scope)
}
}

492
build.xml
View File

@@ -6,21 +6,26 @@
<!-- Set to false to disable compiler's javadoc generation. Speeds up the build -->
<property name="generate.javadoc" value="true"/>
<!-- Set to false to prevent jarjar and metadata stripping on kotlin-reflect.jar and reflection sources. Use to debug reflection -->
<property name="obfuscate.reflect" value="true"/>
<property name="max.heap.size.for.forked.jvm" value="1024m"/>
<property name="bootstrap.home" value="${basedir}/dependencies/bootstrap-compiler"/>
<property name="bootstrap.compiler.home" value="${bootstrap.home}/Kotlin/kotlinc"/>
<property name="bootstrap.runtime" value="${bootstrap.compiler.home}/lib/kotlin-runtime.jar"/>
<property name="bootstrap.reflect" value="${bootstrap.compiler.home}/lib/kotlin-reflect.jar"/>
<property name="bootstrap.kotlin.test" value="${bootstrap.compiler.home}/lib/kotlin-test.jar" />
<property name="output" value="${basedir}/dist"/>
<property name="js.stdlib.output.dir" value="${output}/js"/>
<property name="intermediate-sources" value="out/src" />
<property name="kotlin-home" value="${output}/kotlinc"/>
<property name="build.number" value="snapshot"/>
<property name="bootstrap.build.no.tests" value="false"/>
<property name="idea.sdk" value="${basedir}/ideaSDK"/>
<property name="protobuf.jar" value="${idea.sdk}/lib/protobuf-2.5.0.jar"/>
<property name="protobuf-lite.jar" value="${basedir}/dependencies/protobuf-2.5.0-lite.jar"/>
<property name="protobuf.jar" value="${basedir}/dependencies/protobuf-2.6.1.jar"/>
<property name="protobuf-lite.jar" value="${basedir}/dependencies/protobuf-2.6.1-lite.jar"/>
<property name="javax.inject.jar" value="${basedir}/lib/javax.inject.jar"/>
<property name="java.target" value="1.6"/>
@@ -38,6 +43,10 @@
<include file="jslib_files.xml" />
<property name="compiled.stdlib.js" value="stdlib.js"/>
<property name="compiled.stdlib.meta.js" value="kotlin.meta.js"/>
<property name="stdlib.js.dir" value="${basedir}/js/js.translator/testData"/>
<!--
The compiler produced on the first step of the build (Bootstrap No Tests) is only guaranteed to work against the OLD runtime
located in dependencies/bootstrap-compiler/.../kotlin-runtime.jar, because the newly built compiler is just a Kotlin application,
@@ -55,6 +64,7 @@
<path id="classpath">
<file file="${bootstrap.runtime}"/>
<file file="${bootstrap.kotlin.test}" />
<file file="${bootstrap.reflect}"/>
<fileset dir="${idea.sdk}" includes="core/*.jar"/>
<pathelement location="${protobuf.jar}"/>
@@ -62,7 +72,7 @@
<fileset dir="${basedir}/lib" includes="**/*.jar"/>
<fileset dir="${dependencies.dir}" includes="jansi.jar"/>
<fileset dir="${dependencies.dir}" includes="jline.jar"/>
<fileset dir="${dependencies.dir}" includes="cli-parser-1.1.1.jar"/>
<fileset dir="${dependencies.dir}" includes="cli-parser-1.1.2.jar"/>
<fileset dir="${basedir}/ideaSDK/jps" includes="jps-model.jar"/>
</path>
@@ -88,11 +98,12 @@
<include name="compiler/conditional-preprocessor/src/"/>
<include name="compiler/container/src"/>
<include name="compiler/frontend/src"/>
<include name="compiler/resolution/src"/>
<include name="compiler/frontend.java/src"/>
<include name="compiler/light-classes/src"/>
<include name="compiler/plugin-api/src"/>
<include name="compiler/rmi/rmi-server/src"/>
<include name="compiler/rmi/rmi-interface/src"/>
<include name="compiler/daemon/src"/>
<include name="compiler/daemon/daemon-common/src"/>
<include name="compiler/serialization/src"/>
<include name="compiler/util/src"/>
<include name="js/js.dart-ast/src"/>
@@ -107,6 +118,7 @@
<property name="idea.out" value="${basedir}/out/production"/>
<patternset id="compilerClassesFromIDEA.fileset">
<include name="frontend/**"/>
<include name="resolution/**"/>
<include name="container/**"/>
<include name="descriptors/**"/>
<include name="deserialization/**"/>
@@ -118,8 +130,7 @@
<include name="cli/**"/>
<include name="cli-common/**"/>
<include name="conditional-preprocessor/**"/>
<include name="rmi-server/**"/>
<include name="rmi-interface/**"/>
<include name="daemon/**"/>
<include name="util/**"/>
<include name="util.runtime/**"/>
<include name="light-classes/**"/>
@@ -178,19 +189,33 @@
<sequential if:true="${bootstrap.or.local.build}">
<copy file="${bootstrap.runtime}" tofile="${kotlin-home}/lib/kotlin-runtime-internal-bootstrap.jar"/>
<copy file="${bootstrap.reflect}" tofile="${kotlin-home}/lib/kotlin-reflect-internal-bootstrap.jar"/>
<copy file="${bootstrap.kotlin.test}" tofile="${kotlin-home}/lib/kotlin-test-internal-bootstrap.jar" failonerror="false"/>
<jar destfile="${kotlin-home}/lib/kotlin-reflect-internal-bootstrap.jar" update="true">
<manifest>
<attribute name="Class-Path" value="kotlin-runtime-internal-bootstrap.jar"/>
</manifest>
</jar>
<jar destfile="${kotlin-home}/lib/kotlin-test-internal-bootstrap.jar" update="true">
<manifest>
<attribute name="Class-Path" value="kotlin-runtime-internal-bootstrap.jar"/>
</manifest>
</jar>
</sequential>
<sequential unless:true="${bootstrap.or.local.build}">
<copy file="${bootstrap.runtime}" todir="${kotlin-home}/lib"/>
<copy file="${bootstrap.reflect}" todir="${kotlin-home}/lib"/>
<copy file="${bootstrap.kotlin.test}" todir="${kotlin-home}/lib"/>
</sequential>
</target>
<target name="copy-dist-to-bootstrap">
<delete dir="${basedir}/dependencies/bootstrap-compiler/Kotlin/kotlinc" />
<copy todir="${basedir}/dependencies/bootstrap-compiler/Kotlin/kotlinc">
<fileset dir="${basedir}/dist/kotlinc" />
</copy>
</target>
<target name="compiler-sources">
<jar jarfile="${output}/kotlin-compiler-sources.jar">
<!-- TODO How to convert it from pathset or dirset ? -->
@@ -204,10 +229,11 @@
<fileset dir="compiler/cli/src"/>
<fileset dir="compiler/cli/cli-common/src"/>
<fileset dir="compiler/conditional-preprocessor/src"/>
<fileset dir="compiler/rmi/rmi-server/src"/>
<fileset dir="compiler/rmi/rmi-interface/src"/>
<fileset dir="compiler/daemon/src"/>
<fileset dir="compiler/daemon/daemon-common/src"/>
<fileset dir="compiler/container/src"/>
<fileset dir="compiler/frontend/src"/>
<fileset dir="compiler/resolution/src"/>
<fileset dir="compiler/frontend.java/src"/>
<fileset dir="compiler/light-classes/src"/>
<fileset dir="compiler/plugin-api/src"/>
@@ -293,48 +319,32 @@
<arg value="-output"/>
<arg value="@{output}"/>
<arg value="-no-stdlib"/>
<arg value="-version"/>
<arg value="-meta-info"/>
<arg value="-kjsm"/>
<arg line="-main noCall"/>
<arg line="-module-kind commonjs"/>
</java>
</sequential>
</macrodef>
<target name="js-stdlib">
<property name="compiled.builtins.js" value="builtins.js"/>
<property name="compiled.builtins.meta.js" value="builtins.meta.js"/>
<property name="compiled.stdlib.js" value="stdlib.js"/>
<property name="compiled.stdlib.meta.js" value="stdlib.meta.js"/>
<property name="stdlib.js.dir" value="${basedir}/js/js.translator/testData"/>
<kotlin-pp src="libraries/stdlib/src" output="${intermediate-sources}/stdlib/js" profile="JS" />
<new-kotlin2js output="${output}/${compiled.builtins.js}">
<src>
<fileset refid="kotlin.builtin.files"/>
</src>
</new-kotlin2js>
<new-kotlin2js output="${output}/${compiled.stdlib.js}">
<src>
<resources refid="js.lib.files"/>
</src>
</new-kotlin2js>
<taskdef name="closure-compiler"
classname="com.google.javascript.jscomp.ant.CompileTask"
classpath="${dependencies.dir}/closure-compiler.jar"/>
<target name="js-stdlib-merge">
<!-- value should be one of: whitespace, simple, advanced -->
<property name="compilationLevel" value="whitespace"/>
<!-- value should be one of: default, quiet, verbose -->
<property name="warningLevel" value="default"/>
<taskdef name="closure-compiler"
classname="com.google.javascript.jscomp.ant.CompileTask"
classpath="${dependencies.dir}/closure-compiler.jar"/>
<closure-compiler
compilationLevel="${compilationLevel}"
prettyprint="true"
languagein="ECMASCRIPT5_STRICT"
warning="${warningLevel}"
output="${output}/kotlin.js">
output="${js.stdlib.output.dir}/kotlin.js"
outputWrapperFile="${stdlib.js.dir}/closure-wrapper.txt">
<sources dir="${stdlib.js.dir}">
<file name="kotlin_lib_ecma5.js"/>
@@ -343,27 +353,61 @@
<file name="long.js"/>
</sources>
<sources dir="${output}">
<file name="${compiled.builtins.js}"/>
</sources>
<sources dir="${output}">
<sources dir="${js.stdlib.output.dir}">
<file name="${compiled.stdlib.js}"/>
</sources>
<sources dir="${stdlib.js.dir}">
<file name="export_Kotlin_if_possible.js"/>
<file name="merge.js"/>
</sources>
<externs dir="${stdlib.js.dir}">
<file name="externs.js"/>
</externs>
</closure-compiler>
</target>
<target name="js-stdlib">
<property environment="env"/>
<kotlin-pp src="libraries/stdlib/src" output="${intermediate-sources}/stdlib/js" profile="JS" />
<new-kotlin2js output="${js.stdlib.output.dir}/tmp/kotlin.js">
<src>
<union>
<fileset refid="kotlin.builtin.files"/>
<resources refid="js.lib.files"/>
</union>
</src>
</new-kotlin2js>
<move file="${js.stdlib.output.dir}/tmp/kotlin.js" tofile="${js.stdlib.output.dir}/${compiled.stdlib.js}" />
<move file="${js.stdlib.output.dir}/tmp/kotlin" todir="${js.stdlib.output.dir}" />
<move file="${js.stdlib.output.dir}/tmp/${compiled.stdlib.meta.js}" tofile="${js.stdlib.output.dir}/${compiled.stdlib.meta.js}" />
<condition property="jdk17" value="${env.JDK_17}" else="${env.JAVA_HOME}">
<isset property="env.JDK_17" />
</condition>
<java classname="org.apache.tools.ant.launch.Launcher"
fork="true"
failonerror="true"
timeout="4000000"
taskname="startAnt"
jvm="${jdk17}/bin/java">
<env key="JAVA_HOME" value="${jdk17}"/>
<classpath>
<pathelement location="${ant.home}/lib/ant-launcher.jar"/>
</classpath>
<arg line="-f" />
<arg line="build.xml" />
<arg line="js-stdlib-merge" />
</java>
<jar jarfile="${kotlin-home}/lib/kotlin-jslib.jar" duplicate="fail">
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<zipfileset file="${output}/kotlin.js" prefix=""/>
<zipfileset file="${output}/${compiled.stdlib.meta.js}" prefix=""/>
<zipfileset dir="${js.stdlib.output.dir}" prefix="">
<include name="kotlin.js"/>
<include name="${compiled.stdlib.meta.js}"/>
<include name="kotlin/**"/>
</zipfileset>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
@@ -462,11 +506,17 @@
<attribute name="compress" default="true"/>
<sequential>
<local name="idea.core.uberjar.exists"/>
<available file="${dependencies.dir}/idea/idea-core-all.jar" property="idea.core.uberjar.exists"/>
<!-- TODO: move this jar creation to update_dependencies.xml eventually -->
<jar jarfile="${dependencies.dir}/idea/idea-core-all.jar" unless:true="${idea.core.uberjar.exists}">
<zipgroupfileset dir="${idea.sdk}/core" includes="*.jar" excludes="util.jar"/>
</jar>
<jar jarfile="@{jarfile}" compress="@{compress}" duplicate="preserve">
<fileset dir="${output}/classes/compiler"/>
<fileset dir="${output}/builtins">
<include name="kotlin/**"/>
<exclude name="kotlin/internal/**"/>
</fileset>
<fileset dir="${basedir}/core/descriptor.loader.java/src" includes="META-INF/services/**"/>
<fileset dir="${basedir}/compiler/frontend.java/src" includes="META-INF/services/**"/>
@@ -481,12 +531,12 @@
</fileset>
<zipgroupfileset dir="${basedir}/lib" includes="*.jar"/>
<zipgroupfileset dir="${basedir}/ideaSDK/core" includes="*.jar" excludes="util.jar"/>
<zipfileset src="${dependencies.dir}/idea/idea-core-all.jar" excludes="META-INF/INDEX.LIST"/>
<zipfileset src="${idea.sdk}/lib/jna-platform.jar"/>
<zipfileset src="${idea.sdk}/lib/oromatcher.jar"/>
<zipfileset src="${idea.sdk}/jps/jps-model.jar"/>
<zipfileset src="${dependencies.dir}/jline.jar"/>
<zipfileset src="${dependencies.dir}/cli-parser-1.1.1.jar"/>
<zipfileset src="${dependencies.dir}/cli-parser-1.1.2.jar"/>
<zipfileset src="${protobuf.jar}"/>
<manifest>
@@ -528,8 +578,10 @@
<javac2 destdir="${output}/classes/compiler" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin modulename="kotlin-compiler"/>
<skip pattern="kotlin/jvm/internal/.*"/>
<withKotlin modulename="kotlin-compiler">
<compilerarg value="-version"/>
</withKotlin>
<skip pattern="kotlin/Metadata"/>
<src refid="compilerSources.path"/>
<classpath refid="classpath"/>
</javac2>
@@ -580,12 +632,95 @@
</jar>
</target>
<target name="kotlinr">
<cleandir dir="${output}/classes/kotlinr"/>
<target name="kotlin-build-common">
<cleandir dir="${output}/classes/kotlin-build-common"/>
<kotlinc output="${output}/classes/kotlinr" modulename="kotlin-rmi">
<javac2 destdir="${output}/classes/kotlin-build-common" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin modulename="kotlin-build-common">
<compilerarg value="-version"/>
</withKotlin>
<skip pattern="kotlin/Metadata"/>
<src>
<pathelement path="compiler/rmi/kotlinr/src"/>
<pathelement path="build-common/src"/>
</src>
<classpath>
<pathelement path="${bootstrap.runtime}"/>
<pathelement path="${bootstrap.reflect}"/>
<pathelement path="${idea.sdk}/lib/util.jar"/>
<pathelement path="${kotlin-home}/lib/kotlin-compiler.jar"/>
</classpath>
</javac2>
<jar destfile="${kotlin-home}/lib/kotlin-build-common.jar">
<fileset dir="${output}/classes/kotlin-build-common"/>
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.build.common}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
<jar jarfile="${output}/kotlin-build-common-sources.jar">
<fileset dir="build-common/src"/>
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.build.common.sources}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
</target>
<target name="kotlin-build-common-test">
<cleandir dir="${output}/classes/kotlin-build-common-test"/>
<javac2 destdir="${output}/classes/kotlin-build-common-test" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin modulename="kotlin-build-common"/>
<skip pattern="kotlin/Metadata"/>
<src path="build-common/test"/>
<classpath>
<pathelement path="${bootstrap.runtime}"/>
<pathelement path="${bootstrap.reflect}"/>
<pathelement path="${bootstrap.kotlin.test}"/>
<pathelement path="${protobuf.jar}"/>
<pathelement path="${idea.sdk}/lib/junit-4.12.jar"/>
<pathelement path="${kotlin-home}/lib/kotlin-build-common.jar"/>
<pathelement path="${kotlin-home}/lib/kotlin-compiler.jar"/>
</classpath>
</javac2>
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="dependencies/jarjar.jar"/>
<jarjar jarfile="${kotlin-home}/lib/kotlin-build-common-test.jar">
<fileset dir="${output}/classes/kotlin-build-common-test"/>
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<zipfileset src="${protobuf.jar}"/>
<rule pattern="com.intellij.**" result="org.jetbrains.kotlin.com.intellij.@1"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.build.common}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jarjar>
</target>
<target name="daemon-client">
<cleandir dir="${output}/classes/daemon-client"/>
<kotlinc output="${output}/classes/daemon-client" modulename="client">
<src>
<pathelement path="compiler/daemon/daemon-client/src"/>
</src>
<classpath>
<pathelement path="${bootstrap.runtime}"/>
@@ -595,20 +730,30 @@
</classpath>
</kotlinc>
<jar destfile="${kotlin-home}/lib/kotlinr.jar">
<fileset dir="${output}/classes/kotlinr"/>
<jar destfile="${kotlin-home}/lib/kotlin-daemon-client.jar">
<fileset dir="${output}/classes/daemon-client"/>
<zipfileset src="${dependencies.dir}/native-platform-uberjar.jar" includes="**" />
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.daemon-client}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
</target>
<target name="android-compiler-plugin">
<cleandir dir="${output}/classes/android-compiler-plugin"/>
<javac2 destdir="${output}/classes/android-compiler-plugin" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false">
<withKotlin modulename="kotlin-android-compiler-plugin"/>
<skip pattern="kotlin/jvm/internal/.*"/>
<target name="android-extensions-compiler">
<cleandir dir="${output}/classes/android-extensions/android-extensions-compiler"/>
<javac2 destdir="${output}/classes/android-extensions/android-extensions-compiler" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false">
<withKotlin modulename="kotlin-android-extensions-compiler">
<compilerarg value="-version"/>
</withKotlin>
<skip pattern="kotlin/Metadata"/>
<src>
<pathelement path="plugins/android-compiler-plugin/src"/>
<pathelement path="plugins/android-extensions/android-extensions-compiler/src"/>
</src>
<classpath>
<pathelement path="${idea.sdk}/core/intellij-core.jar"/>
@@ -618,10 +763,10 @@
</classpath>
</javac2>
<jar destfile="${kotlin-home}/lib/android-compiler-plugin.jar">
<fileset dir="${output}/classes/android-compiler-plugin"/>
<jar destfile="${kotlin-home}/lib/android-extensions-compiler.jar">
<fileset dir="${output}/classes/android-extensions/android-extensions-compiler"/>
<zipfileset file="${kotlin-home}/build.txt" prefix="META-INF"/>
<fileset dir="${basedir}/plugins/android-compiler-plugin/src" includes="META-INF/services/**"/>
<fileset dir="${basedir}/plugins/android-extensions/android-extensions-compiler/src" includes="META-INF/services/**"/>
</jar>
</target>
@@ -629,8 +774,10 @@
<cleandir dir="${output}/classes/ant"/>
<javac2 destdir="${output}/classes/ant" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin modulename="kotlin-ant-tools"/>
<skip pattern="kotlin/jvm/internal/.*"/>
<withKotlin modulename="kotlin-ant-tools">
<compilerarg value="-version"/>
</withKotlin>
<skip pattern="kotlin/Metadata"/>
<src>
<dirset dir="${basedir}/ant">
<include name="src"/>
@@ -662,30 +809,6 @@
</jar>
</target>
<target name="jdk-annotations">
<jar destfile="${kotlin-home}/lib/kotlin-jdk-annotations.jar">
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.jdk.annotations}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
</target>
<target name="android-sdk-annotations">
<jar destfile="${kotlin-home}/lib/kotlin-android-sdk-annotations.jar">
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Title" value="${manifest.impl.title.kotlin.android.sdk.annotations}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
</target>
<macrodef name="new-kotlinc">
<attribute name="output"/>
<attribute name="moduleName"/>
@@ -722,16 +845,18 @@
<arg value="-d"/>
<arg value="@{output}"/>
<arg value="-no-stdlib"/>
<arg value="-version"/>
<arg line="@{additionalOptions}"/>
<arg value="-classpath"/>
<arg value="${toString:classpath.path}"/>
<arg value="-module-name"/>
<arg value="@{moduleName}"/>
<arg value="-Xallow-kotlin-package"/>
</java>
<javac2 srcdir="${toString:src.dirset}" destdir="@{output}" debug="true" debuglevel="lines,vars,source"
includeAntRuntime="false" source="${java.target}" target="${java.target}">
<skip pattern="kotlin/jvm/internal/.*"/>
<skip pattern="kotlin/Metadata"/>
<classpath>
<path refid="classpath.path"/>
<!-- Include @{output} here for Java compiler to resolve symbols from Kotlin sources -->
@@ -778,7 +903,7 @@
</target>
<target name="stdlib">
<new-kotlinc output="${output}/classes/stdlib" moduleName="kotlin-stdlib">
<new-kotlinc output="${output}/classes/stdlib" moduleName="kotlin-stdlib" additionalOptions="-Xmultifile-parts-inherit -Xdump-declarations-to ${output}/declarations/stdlib-declarations.json">
<src>
<include name="libraries/stdlib/src"/>
</src>
@@ -788,6 +913,26 @@
</new-kotlinc>
</target>
<target name="kotlin-test">
<new-kotlinc output="${output}/classes/kotlin-test" moduleName="kotlin-test">
<src>
<include name="libraries/kotlin.test/shared/src/main/kotlin" />
<include name="libraries/kotlin.test/shared/src/main/kotlin.jvm" />
<include name="libraries/kotlin.test/junit/src/main/kotlin" />
</src>
<class-path>
<pathelement path="${output}/classes/builtins"/>
<pathelement path="libraries/lib/junit-4.11.jar"/>
</class-path>
</new-kotlinc>
<pack-runtime-jar jar-name="kotlin-test.jar" implementation-title="${manifest.impl.title.kotlin.test}">
<jar-content>
<fileset dir="${output}/classes/kotlin-test" includes="**/*" excludes="kotlin/internal/OnlyInputTypes*,kotlin/internal/InlineOnly*,kotlin/internal"/>
</jar-content>
</pack-runtime-jar>
</target>
<target name="core">
<new-kotlinc output="${output}/classes/core" moduleName="kotlin-core">
<src>
@@ -850,7 +995,6 @@
<fileset dir="${output}/classes/stdlib"/>
<zipfileset dir="${output}/builtins">
<include name="kotlin/**"/>
<exclude name="kotlin/internal/**"/>
<!-- TODO: load metadata from @KotlinClass annotation in KotlinBuiltIns on JVM and restore this exclusion -->
<!-- exclude name="kotlin/reflect/**"/ -->
</zipfileset>
@@ -874,31 +1018,46 @@
</jar>
<delete file="${output}/kotlin-reflect-jarjar.jar" failonerror="false"/>
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="dependencies/jarjar.jar"/>
<jarjar jarfile="${output}/kotlin-reflect-jarjar.jar" filesonly="true" filesetmanifest="merge">
<zipfileset src="${output}/kotlin-reflect-before-jarjar.jar"/>
<rule pattern="org.jetbrains.kotlin.**" result="kotlin.reflect.jvm.internal.impl.@1"/>
<rule pattern="com.google.protobuf.**" result="kotlin.reflect.jvm.internal.impl.com.google.protobuf.@1"/>
<rule pattern="javax.inject.**" result="kotlin.reflect.jvm.internal.impl.javax.inject.@1"/>
</jarjar>
<kotlinc src="${basedir}/generators/infrastructure/strip-kotlin-annotations.kts" output="">
<compilerarg value="-script"/>
<compilerarg value="kotlin/jvm/internal/.*"/> <!-- Annotations to strip -->
<compilerarg value="kotlin/reflect/jvm/internal/impl/.*"/> <!-- Classes to strip from -->
<compilerarg value="${output}/kotlin-reflect-jarjar.jar"/>
<compilerarg value="${kotlin-home}/lib/kotlin-reflect.jar"/>
<classpath>
<pathelement location="${idea.sdk}/lib/asm-all.jar"/>
</classpath>
</kotlinc>
<sequential if:true="${obfuscate.reflect}">
<taskdef name="jarjar" classname="com.tonicsystems.jarjar.JarJarTask" classpath="dependencies/jarjar.jar"/>
<jarjar jarfile="${output}/kotlin-reflect-jarjar.jar" filesonly="true" filesetmanifest="merge">
<zipfileset src="${output}/kotlin-reflect-before-jarjar.jar"/>
<rule pattern="org.jetbrains.kotlin.**" result="kotlin.reflect.jvm.internal.impl.@1"/>
<rule pattern="javax.inject.**" result="kotlin.reflect.jvm.internal.impl.javax.inject.@1"/>
</jarjar>
<kotlinc src="${basedir}/generators/infrastructure/strip-kotlin-annotations.kts" output="">
<compilerarg value="-version"/>
<compilerarg value="-script"/>
<compilerarg value="kotlin/Metadata"/> <!-- Annotation to strip -->
<compilerarg value="kotlin/reflect/jvm/internal/impl/.*"/> <!-- Classes to strip from -->
<compilerarg value="${output}/kotlin-reflect-jarjar.jar"/>
<compilerarg value="${kotlin-home}/lib/kotlin-reflect.jar"/>
<classpath>
<pathelement location="${idea.sdk}/lib/asm-all.jar"/>
</classpath>
</kotlinc>
</sequential>
<sequential unless:true="${obfuscate.reflect}">
<echo message="Obfuscation of kotlin-reflect is disabled"/>
<copy file="${output}/kotlin-reflect-before-jarjar.jar" tofile="${output}/kotlin-reflect-jarjar.jar" overwrite="true"/>
<copy file="${output}/kotlin-reflect-before-jarjar.jar" tofile="${kotlin-home}/lib/kotlin-reflect.jar" overwrite="true"/>
</sequential>
</target>
<target name="pack-runtime-sources">
<!-- Rename packages in the sources of reflection impl (core) -->
<delete dir="${output}/core.src" failonerror="false"/>
<copy todir="${output}/core.src/kotlin/reflect/jvm/internal/impl">
<local name="runtime.sources.base.dir"/>
<condition property="runtime.sources.base.dir"
value="${output}/core.src/kotlin/reflect/jvm/internal/impl"
else="${output}/core.src/org/jetbrains/kotlin">
<istrue value="${obfuscate.reflect}"/>
</condition>
<copy todir="${runtime.sources.base.dir}">
<fileset dir="core">
<include name="descriptor.loader.java/src/**"/>
<include name="descriptors/src/**"/>
@@ -908,9 +1067,13 @@
</fileset>
<cutdirsmapper dirs="5"/> <!-- module/src/org/jetbrains/kotlin -->
</copy>
<replaceregexp match="org\.jetbrains\.kotlin" replace="kotlin.reflect.jvm.internal.impl" flags="g">
<fileset dir="${output}/core.src"/>
</replaceregexp>
<sequential if:true="${obfuscate.reflect}">
<!-- Rename packages in the sources of reflection impl (core) -->
<replaceregexp match="org\.jetbrains\.kotlin" replace="kotlin.reflect.jvm.internal.impl" flags="g">
<fileset dir="${output}/core.src"/>
</replaceregexp>
</sequential>
<pack-runtime-jar jar-name="kotlin-runtime-sources.jar" implementation-title="${manifest.impl.title.kotlin.jvm.runtime.sources}">
<jar-content>
@@ -933,14 +1096,14 @@
</target>
<target name="runtime"
depends="builtins,stdlib,core,reflection,pack-runtime,pack-runtime-sources"/>
depends="builtins,stdlib,kotlin-test,core,reflection,pack-runtime,pack-runtime-sources,mock-runtime-for-test"/>
<target name="dist"
depends="clean,init,prepare-dist,preloader,runner,serialize-builtins,compiler,compiler-sources,ant-tools,jdk-annotations,android-sdk-annotations,runtime,kotlin-js-stdlib,android-compiler-plugin,kotlinr"
depends="clean,init,prepare-dist,preloader,runner,serialize-builtins,compiler,compiler-sources,kotlin-build-common,ant-tools,runtime,kotlin-js-stdlib,android-extensions-compiler,daemon-client,kotlin-build-common-test"
description="Builds redistributables from sources"/>
<target name="dist-quick"
depends="clean,init,prepare-dist,preloader,serialize-builtins,compiler-quick,ant-tools,jdk-annotations,android-sdk-annotations,runtime,kotlin-js-stdlib,android-compiler-plugin"
depends="clean,init,prepare-dist,preloader,serialize-builtins,compiler-quick,ant-tools,runtime,kotlin-js-stdlib,android-extensions-compiler"
description="Builds everything, but classes are reused from project out dir, doesn't run proguard and javadoc"/>
<target name="dist-quick-compiler-only"
@@ -955,75 +1118,6 @@
</zip>
</target>
<target name="kotlin-for-upsource">
<cleandir dir="${output}/classes/idea-analysis"/>
<javac2 destdir="${output}/classes/idea-analysis" debug="true" debuglevel="lines,vars,source" includeAntRuntime="false"
source="${java.target}" target="${java.target}">
<withKotlin modulename="kotlin-for-upsource"/>
<skip pattern="kotlin/jvm/internal/.*"/>
<src>
<dirset dir="${basedir}/idea/ide-common" includes="src"/>
<dirset dir="${basedir}/idea/idea-analysis" includes="src"/>
</src>
<classpath>
<fileset dir="${idea.sdk}" includes="core-analysis/*.jar"/>
<pathelement location="${output}/kotlin-compiler-before-shrink.jar"/>
<path refid="classpath"/>
</classpath>
</javac2>
<copy todir="${output}/classes/idea-analysis">
<fileset dir="${basedir}/idea/idea-analysis/src" excludes="**/*.java, **/*.kt"/>
</copy>
<jar jarfile="${output}/kotlin-for-upsource0.jar">
<fileset dir="${output}/classes/idea-analysis"/>
<fileset dir="${output}/classes/compiler"/>
<fileset dir="${output}/builtins">
<include name="kotlin/**"/>
<exclude name="kotlin/internal/**"/>
</fileset>
<fileset dir="${basedir}/core/descriptor.loader.java/src" includes="META-INF/services/**"/>
<fileset dir="${basedir}/compiler/frontend.java/src" includes="META-INF/services/**"/>
<fileset dir="${basedir}/compiler/backend/src" includes="META-INF/services/**"/>
<fileset dir="${basedir}/compiler/cli/src" includes="META-INF/services/**"/>
<zipgroupfileset dir="${basedir}/lib" includes="*.jar"/>
<zipgroupfileset file="${kotlin-home}/lib/kotlin-runtime.jar"/>
<zipgroupfileset file="${kotlin-home}/lib/kotlin-runtime-sources.jar"/>
<zipgroupfileset file="${kotlin-home}/lib/kotlin-reflect.jar"/>
<fileset dir="${basedir}/resources"/>
<!-- icons, etc. -->
<fileset dir="idea/resources"/>
<!-- plugin.xml and friends -->
<fileset dir="idea/src" includes="META-INF/**"/>
</jar>
<sleep seconds="1"/>
<jar jarfile="${output}/kotlin-for-upsource.jar">
<zipfileset src="${output}/kotlin-for-upsource0.jar">
<exclude name="javax/**/*.java"/>
</zipfileset>
</jar>
<delete file="${output}/kotlin-for-upsource0.jar"/>
<!-- sources -->
<jar jarfile="${output}/kotlin-for-upsource-sources.jar">
<zipfileset src="${output}/kotlin-compiler-sources.jar" includes="**/*"/>
<fileset dir="idea/idea-analysis/src"/>
<fileset dir="idea/ide-common/src"/>
<manifest>
<attribute name="Built-By" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Vendor" value="${manifest.impl.vendor}"/>
<attribute name="Implementation-Version" value="${build.number}"/>
</manifest>
</jar>
</target>
<target name="zip-test-data">
<zip destfile="${output}/kotlin-test-data.zip">
<zipfileset dir="compiler/testData" prefix="compiler"/>
@@ -1032,7 +1126,29 @@
</zip>
</target>
<target name="mock-runtime-for-test">
<delete dir="${output}/mock-runtime-src" failonerror="false"/>
<mkdir dir="${output}/mock-runtime-src"/>
<copy file="${basedir}/libraries/stdlib/src/kotlin/util/Standard.kt" todir="${output}/mock-runtime-src"/>
<copy file="${basedir}/libraries/stdlib/src/kotlin/internal/Annotations.kt" todir="${output}/mock-runtime-src"/>
<new-kotlinc output="${output}/classes/mock-runtime" moduleName="kotlin-stdlib">
<src>
<include name="dist/mock-runtime-src"/>
</src>
<class-path>
<pathelement path="${output}/classes/builtins"/>
</class-path>
</new-kotlinc>
<pack-runtime-jar jar-dir="${output}" jar-name="kotlin-mock-runtime-for-test.jar" implementation-title="Kotlin Mock Runtime">
<jar-content>
<fileset dir="${output}/classes/mock-runtime"/>
</jar-content>
</pack-runtime-jar>
</target>
<target name="build-bootstrap-artifacts" depends="dist,zip-compiler"/>
<target name="build-artifacts" depends="dist,zip-compiler,kotlin-for-upsource,zip-test-data"/>
<target name="build-artifacts" depends="dist,zip-compiler,zip-test-data"/>
</project>

View File

@@ -1,43 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="FacetManager">
<facet type="android" name="Android">
<configuration>
<option name="GEN_FOLDER_RELATIVE_PATH_APT" value="/gen" />
<option name="GEN_FOLDER_RELATIVE_PATH_AIDL" value="/gen" />
<option name="MANIFEST_FILE_RELATIVE_PATH" value="/AndroidManifest.xml" />
<option name="RES_FOLDER_RELATIVE_PATH" value="/res" />
<option name="ASSETS_FOLDER_RELATIVE_PATH" value="/assets" />
<option name="LIBS_FOLDER_RELATIVE_PATH" value="/libs" />
<option name="USE_CUSTOM_APK_RESOURCE_FOLDER" value="false" />
<option name="CUSTOM_APK_RESOURCE_FOLDER" value="" />
<option name="USE_CUSTOM_COMPILER_MANIFEST" value="false" />
<option name="CUSTOM_COMPILER_MANIFEST" value="" />
<option name="APK_PATH" value="" />
<option name="LIBRARY_PROJECT" value="false" />
<option name="RUN_PROCESS_RESOURCES_MAVEN_TASK" value="true" />
<option name="GENERATE_UNSIGNED_APK" value="false" />
<option name="CUSTOM_DEBUG_KEYSTORE_PATH" value="" />
<option name="PACK_TEST_CODE" value="false" />
<option name="RUN_PROGUARD" value="false" />
<option name="PROGUARD_CFG_PATH" value="/proguard-project.txt" />
<resOverlayFolders>
<path>/res-overlay</path>
</resOverlayFolders>
<includeSystemProguardFile>true</includeSystemProguardFile>
<includeAssetsFromLibraries>false</includeAssetsFromLibraries>
<additionalNativeLibs />
</configuration>
</facet>
</component>
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/gen" isTestSource="false" />
</content>
<orderEntry type="jdk" jdkName="Android 2.3.3 Platform" jdkType="Android SDK" />
<module version="4">
<component name="NewModuleRootManager" inherit-compiler-output="false">
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
</module>

View File

@@ -0,0 +1,74 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.1.0'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
apply plugin: 'com.android.application'
repositories {
jcenter()
}
android {
compileSdkVersion 19
buildToolsVersion "23.0.3"
defaultConfig {
applicationId "org.jetbrains.kotlin.android.tests"
minSdkVersion 19
targetSdkVersion 19
versionCode 1
versionName "1.0"
testApplicationId "org.jetbrains.kotlin.android.tests.gradle"
testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
buildTypes {
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java {
srcDirs = ['src']
}
res.srcDirs = ['res']
}
androidTest {
java {
srcDirs = ['src']
}
}
}
packagingOptions { exclude 'META-INF/build.txt' }
//TODO run under java 6, cause there is error on implicit 'stream' import in 'asWithMutable' test
lintOptions {
abortOnError false
}
compileOptions {
incremental = false
}
dexOptions {
dexInProcess false
javaMaxHeapSize "600m"
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile 'junit:junit:4.12'
}

View File

@@ -8,5 +8,5 @@
# For customization when using a Version Control System, please read the
# header note.
#sdk.dir=compiler/android-tests/android-module/android-sdk/android-sdk-windows
#sdk.dir.relative=android-sdk/android-sdk-windows
sdk.dir=../../../android.tests.dependencies/android-sdk

View File

@@ -22,21 +22,13 @@ import java.lang.reflect.Method;
public class AbstractCodegenTestCaseOnAndroid extends TestCase {
protected void invokeBoxMethod(String filePath, String expectedResult) throws Exception {
protected void invokeBoxMethod(Class clazz, String filePath, String expectedResult) throws Exception {
try {
Class clazz;
String packageName = filePath.replaceAll("\\\\|-|\\.|/", "_");
clazz = Class.forName(packageName + "." + getPackageClassName(packageName));
Method method;
method = clazz.getMethod("box");
Method method = clazz.getMethod("box");
assertEquals(expectedResult, method.invoke(null));
}
catch (Throwable e) {
throw new RuntimeException("File: " + filePath, e);
}
}
public static String getPackageClassName(String packageName) {
return Character.toUpperCase(packageName.charAt(0)) + packageName.substring(1, packageName.length()) + "Package";
}
}

View File

@@ -9,12 +9,13 @@
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="cli" />
<orderEntry type="module" module-name="compiler-tests" />
<orderEntry type="module" module-name="tests-common" />
<orderEntry type="module" module-name="frontend" />
<orderEntry type="module" module-name="backend" />
<orderEntry type="library" name="jps-test" level="project" />
<orderEntry type="module" module-name="generators" scope="TEST" />
<orderEntry type="library" name="idea-full" level="project" />
<orderEntry type="module" module-name="util" />
<orderEntry type="module" module-name="descriptor.loader.java" scope="TEST" />
<orderEntry type="module" module-name="frontend.java" scope="TEST" />
</component>
</module>

View File

@@ -19,25 +19,27 @@ package org.jetbrains.kotlin.android.tests;
import com.intellij.util.PlatformUtils;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.kotlin.android.tests.ant.AntRunner;
import org.jetbrains.kotlin.android.tests.download.SDKDownloader;
import org.jetbrains.kotlin.android.tests.emulator.Emulator;
import org.jetbrains.kotlin.android.tests.gradle.GradleRunner;
import org.jetbrains.kotlin.android.tests.run.PermissionManager;
import org.junit.Assert;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class CodegenTestsOnAndroidRunner {
private static final Pattern ERROR_IN_TEST_OUTPUT_PATTERN =
Pattern.compile("([\\s]+at .*| Caused .*| java.lang.RuntimeException: File: .*|[\\s]+\\.\\.\\. .* more| Error in .*)");
private static final Pattern NUMBER_OF_TESTS_IF_FAILED = Pattern.compile("Tests run: ([0-9]*), Failures: ([0-9]*), Errors: ([0-9]*)");
private static final Pattern NUMBER_OF_TESTS_OK = Pattern.compile(" OK \\(([0-9]*) tests\\)");
private final PathManager pathManager;
@@ -53,120 +55,22 @@ public class CodegenTestsOnAndroidRunner {
TestSuite suite = new TestSuite("MySuite");
String resultOutput = runTests();
if (resultOutput == null) return suite;
// Test name -> stackTrace
Map<String, String> resultMap = parseOutputForFailedTests(resultOutput);
final Statistics statistics;
// If map is empty => there are no failed tests
if (resultMap.isEmpty()) {
statistics = parseOutputForTestsNumberIfTestsPassed(resultOutput);
String reportFolder = pathManager.getTmpFolder() + "/build/outputs/androidTest-results/connected";
try {
List<TestCase> testCases = parseSingleReportInFolder(reportFolder);
for (TestCase aCase : testCases) {
suite.addTest(aCase);
}
Assert.assertNotEquals("There is no test results in report", 0, testCases.size());
}
else {
statistics = parseOutputForTestsNumberIfThereIsFailedTests(resultOutput);
for (final Map.Entry<String, String> entry : resultMap.entrySet()) {
suite.addTest(new TestCase("run") {
@Override
public String getName() {
return entry.getKey();
}
@Override
protected void runTest() throws Throwable {
Assert.fail(entry.getValue() + "See more information in log above.");
}
});
}
catch (Exception e) {
throw new RuntimeException("Can't parse test results in " + reportFolder +"\n" + resultOutput);
}
Assert.assertNotNull("Cannot parse number of failed tests from final line", statistics);
Assert.assertEquals("Number of stackTraces != failed tests on the final line", resultMap.size(),
statistics.failed + statistics.errors);
suite.addTest(new TestCase("run") {
@Override
public String getName() {
return "testAll: Total: " + statistics.total + ", Failures: " + statistics.failed + ", Errors: " + statistics.errors;
}
@Override
protected void runTest() throws Throwable {
Assert.assertTrue(true);
}
});
return suite;
}
/*
Output example:
[exec] Error in testKt344:
[exec] java.lang.RuntimeException: File: compiler\testData\codegen\boxWithStdlib\regressions\kt344.kt
[exec] at org.jetbrains.kotlin.android.tests.AbstractCodegenTestCaseOnAndroid.invokeBoxMethod(AbstractCodegenTestCaseOnAndroid.java:38)
[exec] at org.jetbrains.kotlin.android.tests.CodegenTestCaseOnAndroid.testKt344(CodegenTestCaseOnAndroid.java:595)
[exec] at java.lang.reflect.Method.invokeNative(Native Method)
[exec] at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
[exec] Caused by: java.lang.reflect.InvocationTargetException
[exec] at java.lang.reflect.Method.invokeNative(Native Method)
[exec] at org.jetbrains.kotlin.android.tests.AbstractCodegenTestCaseOnAndroid.invokeBoxMethod(AbstractCodegenTestCaseOnAndroid.java:35)
[exec] ... 13 more
[exec] Caused by: java.lang.VerifyError: compiler_testData_codegen_boxWithStdlib_regressions_kt344_kt.Compiler_testData_codegen_boxWithStdlib_regressions_kt344_ktPackage$t6$foo$1
[exec] at compiler_testData_codegen_boxWithStdlib_regressions_kt344_kt.Compiler_testData_codegen_boxWithStdlib_regressions_kt344_ktPackage.t6(dummy.kt:94)
[exec] at compiler_testData_codegen_boxWithStdlib_regressions_kt344_kt.Compiler_testData_codegen_boxWithStdlib_regressions_kt344_ktPackage.box(dummy.kt:185)
[exec] ... 16 more
[exec] ...............
[exec] Error in testKt529:
*/
private static Map<String, String> parseOutputForFailedTests(@NotNull String output) {
Map<String, String> result = new HashMap<String, String>();
StringBuilder builder = new StringBuilder();
String failedTestNamePrefix = " Error in ";
String lastFailedTestName = "";
Matcher matcher = ERROR_IN_TEST_OUTPUT_PATTERN.matcher(output);
while (matcher.find()) {
String groupValue = matcher.group();
if (groupValue.startsWith(failedTestNamePrefix)) {
if (builder.length() > 0) {
result.put(lastFailedTestName, builder.toString());
builder.delete(0, builder.length());
}
lastFailedTestName = groupValue.substring(failedTestNamePrefix.length());
}
builder.append(groupValue);
builder.append("\n");
}
if (builder.length() > 0) {
result.put(lastFailedTestName, builder.toString());
}
return result;
}
//[exec] Tests run: 225, Failures: 0, Errors: 2
@Nullable
private static Statistics parseOutputForTestsNumberIfThereIsFailedTests(String output) {
Matcher matcher = NUMBER_OF_TESTS_IF_FAILED.matcher(output);
if (matcher.find()) {
return new Statistics(Integer.parseInt(matcher.group(1)), Integer.parseInt(matcher.group(2)),
Integer.parseInt(matcher.group(3)));
}
return null;
}
//[exec] OK (223 tests)
@Nullable
private static Statistics parseOutputForTestsNumberIfTestsPassed(String output) {
Matcher matcher = NUMBER_OF_TESTS_OK.matcher(output);
if (matcher.find()) {
return new Statistics(Integer.parseInt(matcher.group(1)), 0, 0);
}
return null;
}
@Nullable
public String runTests() {
File rootForAndroidDependencies = new File(pathManager.getDependenciesRoot());
@@ -175,27 +79,27 @@ public class CodegenTestsOnAndroidRunner {
}
SDKDownloader downloader = new SDKDownloader(pathManager);
Emulator emulator = new Emulator(pathManager);
AntRunner antRunner = new AntRunner(pathManager);
downloader.downloadAll();
downloader.unzipAll();
PermissionManager.setPermissions(pathManager);
AntRunner antRunner = new AntRunner(pathManager);
antRunner.packLibraries();
Emulator emulator = new Emulator(pathManager, Emulator.ARM);
GradleRunner gradleRunner = new GradleRunner(pathManager);
gradleRunner.clean();
gradleRunner.build();
emulator.createEmulator();
String platformPrefixProperty = System.setProperty(PlatformUtils.PLATFORM_PREFIX_KEY, "Idea");
try {
PermissionManager.setPermissions(pathManager);
antRunner.packLibraries();
emulator.createEmulator();
emulator.startEmulator();
try {
emulator.waitEmulatorStart();
antRunner.cleanOutput();
antRunner.compileSources();
antRunner.installApplicationOnEmulator();
return antRunner.runTestsOnEmulator();
//runTestsViaAdb(emulator, gradleRunner);
return gradleRunner.connectedDebugAndroidTest();
}
catch (RuntimeException e) {
e.printStackTrace();
@@ -220,15 +124,55 @@ public class CodegenTestsOnAndroidRunner {
}
}
private static class Statistics {
public final int total;
public final int errors;
public final int failed;
private String runTestsViaAdb(Emulator emulator, GradleRunner gradleRunner) {
gradleRunner.installDebugAndroidTest();
String result = emulator.runTestsViaAdb();
System.out.println(result);
gradleRunner.uninstallDebugAndroidTest();
return result;
}
private Statistics(int total, int failed, int errors) {
this.total = total;
this.failed = failed;
this.errors = errors;
private static List<TestCase> parseSingleReportInFolder(String reportFolder) throws
IOException,
SAXException,
ParserConfigurationException {
File folder = new File(reportFolder);
File[] files = folder.listFiles();
assert files != null;
assert files.length == 1;
File reportFile = files[0];
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(reportFile);
Element root = doc.getDocumentElement();
NodeList testCases = root.getElementsByTagName("testcase");
List<TestCase> result = new ArrayList(testCases.getLength());
for (int i = 0; i < testCases.getLength(); i++) {
Element item = (Element) testCases.item(i);
final NodeList failure = item.getElementsByTagName("failure");
String name = item.getAttribute("name");
String clazz = item.getAttribute("classname");
if (failure.getLength() == 0) {
result.add(new TestCase(name) {
@Override
protected void runTest() throws Throwable {
}
});
}
else {
result.add(new TestCase(name) {
@Override
protected void runTest() throws Throwable {
Assert.fail(failure.item(0).getTextContent());
}
});
}
}
return result;
}
}

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