Commit Graph

11225 Commits

Author SHA1 Message Date
Alexander Udalov ea6d0b464d Report error when free function is called as extension 2015-05-26 15:05:04 +03:00
Svetlana Isakova 14c2690447 Distinguish between no declared arguments and an empty argument list
in a function literal
If there are no arguments, any number of them might be expected
2015-05-26 15:05:03 +03:00
Svetlana Isakova d9568ef88c Added special type constructor for function/ extension function
that stores an information about declared argument types
2015-05-26 15:05:02 +03:00
Alexander Udalov 9ba6d91e2e Prepare JVM runtime for support of reflection on functions
Introduce abstract class FunctionReference, which is supposed to be a
superclass for all anonymous classes generated for function references. Each
anonymous subclass will have statically-generated symbol info, which will be
used by reflection to locate the symbol
2015-05-26 15:05:01 +03:00
Alexander Udalov 9aeae7ddc6 Extract FunctionReferenceGenerationStrategy to top level 2015-05-26 15:05:00 +03:00
Alexander Udalov 4d00077ffb Delete assertion on receiver presence in 'invoke'
#KT-6541 Fixed
 #KT-7383 Fixed
2015-05-26 15:04:59 +03:00
Alexander Udalov 34c6af0039 Advance stub and JVM ABI versions due to function type reform 2015-05-26 15:04:58 +03:00
Alexander Udalov 6a0a703539 Delete numbered ExtensionFunction classes and generation logic 2015-05-26 15:04:57 +03:00
Alexander Udalov 2186ce5e8d Degrade CFG test on values of extension function type
Apparently type annotations ('kotlin.extension' in particular) are lost
somewhere in control-flow values processor at the moment, so types may not be
as precise as they were when functions and extension functions had different
classifiers.

This test presumably only affects IDE functionality like 'Extract Method' in a
way that it will suggest a slightly incorrect function type for the parameter
of an extracted method. An issue is to be reported and fixed later upon demand
2015-05-26 15:04:56 +03:00
Alexander Udalov 49004a8b8e Conform functions to extension functions and vice versa
#KT-5989 Fixed
2015-05-26 15:04:56 +03:00
Alexander Udalov 4141e0a8df Introduce fictitious numbered Function class descriptors 2015-05-26 15:04:54 +03:00
Alexander Udalov 27ed098467 Introduce kotlin.jvm.internal.Lambda, superclass for all lambdas
It has its arity precomputed, as opposed to the future KFunctionImpl inheriting
from FunctionImpl, for which the computation of arity can take some time and so
it shouldn't be passed in the constructor and saved as a field
2015-05-26 15:04:54 +03:00
Alexander Udalov 86ecb423f6 Drop generic parameters from FunctionImpl classes in JVM runtime
They are not used in any way but cause some complex code in JVM back-end
2015-05-26 15:04:53 +03:00
Alexander Udalov 135ee92966 Minor, don't pass constants as parameters 2015-05-26 15:04:52 +03:00
Alexander Udalov d4965a4f3e Add temporary imports for disambiguation 2015-05-26 15:04:52 +03:00
Alexander Udalov 738a84e259 Temporary hack to migrate functions to package kotlin.jvm.functions
Add a file in package 'kotlin.jvm.functions' to the project and replace
explicit imports of functions 'kotlin.Function{n}' to two imports 'kotlin.*'
and 'kotlin.jvm.functions.*', so that the codebase can be compiled both by the
old and by the new compiler
2015-05-26 15:04:34 +03:00
Alexander Udalov 7baa7a72e2 Avoid extension functions in Java-facing code in project
This is to workaround the coming functions / extension functions global
refactoring and move
2015-05-26 14:27:42 +03:00
Alexander Udalov b574c1d205 Move 23 function classes to package kotlin.jvm.functions, drop KFunction* 2015-05-26 14:27:41 +03:00
Alexander Udalov f6178ad7dd Introduce Function, KFunction interfaces and 'extension' annotation 2015-05-26 14:27:40 +03:00
Alexander Udalov 90097d7e8b Move callable reference diagnostic tests to non-stdlib 2015-05-26 14:27:40 +03:00
Alexander Udalov 51684b3fe1 Drop "Reflection types not loaded" diagnostic
Reflection types are now considered to be built-in, so their absence means the
runtime is broken and the compiler can't work at all; this condition probably
should be handled on another level for all built-in types
2015-05-26 14:27:39 +03:00
Alexander Udalov 45c28abfee Keep built-in metadata for reflection interfaces
Reflection interfaces (interfaces in kotlin.reflect.* in core/builtins/) are
now fully considered as built-ins and can be accessed via KotlinBuiltIns. This
increases runtime size by ~20kb, but only because KotlinBuiltIns is static and
is therefore constructed only via resource loading from the compiler classpath
at the moment. As soon as it's possible to inject KotlinBuiltIns to the
particular resolution process, the metadata on JVM will be loaded via standard
annotation mechanism (kotlin.jvm.internal.KotlinClass/KotlinPackage) and wasted
runtime space will be reclaimed
2015-05-26 14:27:38 +03:00
Michael Nedzelsky fc916b22f8 MockLibraryUtil: add support for compile to js 2015-05-26 05:04:36 +03:00
Michael Nedzelsky d4f348edd5 VirtualFileFinder: regenerate injectors 2015-05-26 05:03:54 +03:00
Michael Nedzelsky 618a8622a1 VirtualFileFinderFactory: introduce JvmVirtualFileFinderFactory, JsVirtualFileFinderFactory 2015-05-26 05:03:51 +03:00
Michael Nedzelsky 06af6bbd82 JS: KotlinJavascriptSerializationUtil, KotlinJavascriptSerializedResourcePaths: add some useful functions 2015-05-26 05:03:14 +03:00
Ilya Gorbunov 1cf4a407d1 JS: Provide MIN_VALUE and MAX_VALUE member constants for Double and Float companion objects.
JVM: Make MIN_VALUE and MAX_VALUE not an extension but member constant properties of Double and Float companion objects.
2015-05-26 00:26:19 +03:00
Alexey Tsvetkov 08df655dcc JS: simplify load metadata 2015-05-25 20:20:25 +03:00
Alexey Tsvetkov b2238c0ebf JS: search inline function in .js file corresponding to module's
.meta.js
2015-05-25 20:20:25 +03:00
Evgeny Gerashchenko 0488229a61 KT-7693 Unused constructor parameter is not detected if class is constructed with named argument
#KT-7693 fixed
2015-05-25 18:33:08 +03:00
Mikhail Glukhikh 3c7225e83a An implementation of KT-7753: now enum constructors cannot be called explicitly.
Several tests are provided.
 #KT-7753 Fixed.
2015-05-25 17:27:31 +03:00
Michael Bogdanov 8cf21f24cd Fix for KT-7792: Invalid class file generation: java.lang.ClassFormatError: Invalid length 65522 in LocalVariableTable in class file
#KT-7792 Fixed
2015-05-25 17:06:18 +03:00
Mikhail Glukhikh f4977a1108 Reorganization of when checking: exhaustion predicates clarified, analysis on platform enum warnings was moved to frontend.java 2015-05-25 14:23:57 +03:00
Pavel V. Talanov e4c242e66b Remove direct usages of ModuleDescriptor#getPackageFragmentProvider() 2015-05-25 13:00:16 +03:00
Mikhail Glukhikh babb7e58bc Implementation of KT-6399: platform types under when are now counted as not nullable but warning is generated. #KT-6399 Fixed.
A set of tests. Warning about Java enum nullable argument under when in particular situations.
2015-05-22 18:38:30 +03:00
Evgeny Gerashchenko a5da64bd4f Don't ask user to choose method for renaming parameter when it is changed in overridden function. 2015-05-22 17:18:09 +03:00
Evgeny Gerashchenko 2568fc92cb Supported Kotlin in Java's automatic parameter renamer. 2015-05-22 17:18:07 +03:00
Ilya Gorbunov 79a5e0607d Fix deprecated replaceAll and replaceFirst usages. 2015-05-22 16:13:53 +03:00
Alexey Sedunov b1f1360081 PSI: Make JetPostfixExpression.getBaseExpression() nullable
#KT-7761 Fixed
2015-05-21 19:29:49 +03:00
Natalia Ukhorskaya 5edc25d2ba Debugger: step into default property getter/setter
#KT-7287 Fixed
2015-05-21 19:17:31 +03:00
Ilya Gorbunov fb342de451 Ensure stable order is used when rendering list of resolved calls by sorting them with MemberComparator. 2015-05-21 19:07:19 +03:00
Zalim Bashorov 4de3e3c712 Fix SlicedMapImpl#clear 2015-05-21 18:53:57 +03:00
Zalim Bashorov d8b1856e1c Create SlicedMapImpl#collectiveSliceKeys on demand 2015-05-21 18:53:56 +03:00
Zalim Bashorov 492404bf04 Introduce KeyWithSlice and use it as Key for UserDataHolder in SlicedMap instead of cashing mapping from key to slice(see SlicedMapImpl#keyIdToSlice) 2015-05-21 18:53:56 +03:00
Zalim Bashorov ecb824386e Optimize memory usage in SlicedMapImpl (used in BindingContext)
In short:
before these changes: Map<SlicedMapKey<slice, key>, value>
after: Map<key, Map<slice, value>> // where for nested Map used lightweight storage UserDataHolder

Before these changes it stored map from SlicedMapKey to value.
Where SlicedMapKey created for each record and store slice and key.
And now it sored map from key to UserDataHolder.
UserDataHolder store map from slice to value.
2015-05-21 18:53:56 +03:00
Zalim Bashorov c7175e1858 Temporary copy UserDataHolderBase and KeyFMap implementations from intellij/master 2015-05-21 18:53:56 +03:00
Yan Zhulanow 594988db51 Move kapt compiler plugin classes to BundledCompilerPlugins 2015-05-21 15:48:20 +03:00
Yan Zhulanow b2220ca98a Annotation collector compiler plugin 2015-05-21 15:48:06 +03:00
Mikhail Glukhikh c8aa6defb6 Data flow information is no longer dropped while analyzing object literal expression. #KT-6293 Fixed. #KT-7110 Fixed.
A set of tests for KT-6293 / KT-7110 provided.
2015-05-21 13:03:39 +03:00
Michael Bogdanov 5bca1d3c8f Added dianostic error for non-local return on disabled inlines,
Render bytecode diagnostics in BytecodeToolWindow

  #KT-5584 Fixed
2015-05-21 10:06:03 +03:00