Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

The Kotlin Programming Language

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 .idea Add annotations from eval4j April 23, 2014
Octocat-spinner-32 android-studio Configuration for Android Studio debug created March 06, 2014
Octocat-spinner-32 annotations Debugger: use extract method to get function arguments April 23, 2014
Octocat-spinner-32 build-tools Support inline true/false options March 20, 2014
Octocat-spinner-32 compiler CollectionElement.dupReceiver simplification April 24, 2014
Octocat-spinner-32 core Only create lazy annotations for descriptors from code April 18, 2014
Octocat-spinner-32 docs Removed @author javadocs from code. December 28, 2012
Octocat-spinner-32 eval4j Add copyright April 23, 2014
Octocat-spinner-32 generators Intention to transform an if an AssertionError throw into an assert April 24, 2014
Octocat-spinner-32 grammar Minor. Grammar rules fixed March 19, 2014
Octocat-spinner-32 ide-compiler-runner Render file name and position in errors from JS library stubs March 28, 2014
Octocat-spinner-32 idea Added MIN_JAVA_VERSION directive for intentions and fixed failed test… April 24, 2014
Octocat-spinner-32 idea_runner Automatically enable Kotlin plugin if it was disabled April 04, 2014
Octocat-spinner-32 injector-generator Generate Injectors: minor, remove redundant GenerateInjectors class February 14, 2014
Octocat-spinner-32 j2k Update to Idea EAP 134.1342 February 28, 2014
Octocat-spinner-32 jps-plugin Update to idea 135.666 EAP with asm5 library April 01, 2014
Octocat-spinner-32 js Add platform independent part of Range tests to JS stdlib test run April 24, 2014
Octocat-spinner-32 lib Migrate build and project configuration to IntelliJ IDEA 12 (Leda) EAP July 25, 2012
Octocat-spinner-32 libraries Split tests into platform independent and JVM parts to run subset of … April 24, 2014
Octocat-spinner-32 license Update year in the licence March 26, 2013
Octocat-spinner-32 pluginPublisher Download idea for verify to non-default folder March 28, 2014
Octocat-spinner-32 resources Don't build j2k on 'ant dist' March 24, 2014
Octocat-spinner-32 .gitignore Debugger: compile TINY_APP in test once April 23, 2014
Octocat-spinner-32 Kotlin.iml Extracted manifest values to `manifest.properties` file. October 04, 2013
Octocat-spinner-32 ReadMe.md Extra instructions added April 05, 2014
Octocat-spinner-32 TeamCityBuild.xml Remove unused verifier dependency September 11, 2013
Octocat-spinner-32 build.xml Update to idea 135.666 EAP with asm5 library April 01, 2014
Octocat-spinner-32 description description November 08, 2011
Octocat-spinner-32 update_dependencies.xml Add module eval4j April 23, 2014
ReadMe.md

Kotlin Programming Language

Welcome to Kotlin! Some handy links:

Editing Kotlin

Building

To build this project, first time you try to build you need to run this (requires Apache Ant 1.8 or higher):

ant -f update_dependencies.xml

which will setup the dependencies on

  • intellij-core: is a part of command line compiler and contains only necessary APIs.
  • idea-full: is a full blown IntelliJ IDEA Community Edition to be used in former plugin module.

Then, you need to run

ant -f build.xml

which will build the binaries of the compiler and put them into the 'dist' directory. You may need to increase the heap size for Ant using ANT_OPTS.

OPTIONAL: Maven distribution is built separately, run

mvn package

from 'libraries' directory after building the compiler. Refer to libraries/ReadMe.md for details.

Working with the project in IDEA

The root kotlin project already has an IDEA project, you can just open it in IDEA.

You may need to set the Project SDK (File -> Project Structure -> Project). You may also need to add tools.jar to your SDK: File -> Project Structure -> SDKs -> -> Classpath, then choose the tools.jar in the JDK's lib directory.

If you are not dealing with Android, you may need to disable the Android Plugin in order to compile the project.

Since Kotlin project contains code written in Kotlin itself, you will also need a Kotlin plugin to build the project in IntelliJ IDEA. To keep the plugin version in sync with the rest of the team and our Continuous Integration server you should install the according to the instructions below.

If you want to have an IDEA installation without the Kotlin plugin which is separate to your default IDEA installation which has the Kotlin plugin see this document which describes how to have mutliple IDEA installs using different configurations and plugin directories.

From this root project there are Run/Debug Configurations for running IDEA or the Compiler Tests for example; so if you want to try out the latest greatest IDEA plugin

  • VCS -> Git -> Pull
  • Run IDEA
  • a child IDEA with the Kotlin plugin will then startup
  • you can now open the kotlin libraries project to then work with the various kotlin libraries etc.

Using a pre-built Kotlin IDEA plugin

There are several options for getting Kotlin plugin. A stable version can be obtained as any other plugin for Intellij IDEA:

Preferences -> Plugins -> Browse Repositories -> Search with "Kotlin" string

The most recent version of the plugin can be downloaded from the IDEA Plugin and Tests CI build. When downloading is finished you can install it with "Install plugin from disk...":

Preferences -> Plugins -> Install plugin from disk...

You can now open any Kotlin based projects.

Note for contributors: If you are planning to contribute to Kotlin project you probably want to have locally the same version of plugin that build server is using for building. As this version is constantly moving, the best way to always be updated is to let IDEA notify you when it is time to renew you plugin.

Open

Preferences -> Plugins -> Browse Repositories -> Manage Repositories...

and add the following URL to your repositories:

http://teamcity.jetbrains.com/guestAuth/repository/download/bt345/bootstrap.tcbuildtag/updatePlugins.xml

Then update the list of plugins in "Browse Repositories", you'll see two versions of Kotlin there, install the one with the higher version number.

Contributing

We love contributions! There's lots to do on kotlin and on the standard library so why not chat with us on the forum about what you're interested in doing?

If you want to find some issues to start off with, try this query which should find all issues that are not resolved assigned to Kontributor.

Currently only committers can assign issues to themselves so just add a comment if you're starting work on it.

A nice gentle way to contribute would be to review the API docs 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 filter() function on Collection. This is implemented using the @includeFunctionBody 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.

Also the JavaScript translation could really use your help. See the JavaScript contribution section for more details.

If you want to work on the compiler

The Kotlin compiler is currently all written in Java (we plan to port it to Kotlin later). So the easiest way to work on the compiler or IDEA plugin is

You can now run the various Run/Debug Configurations such as

  • IDEA
  • All Compiler Tests
  • All IDEA Plugin Tests

If you want to work on the Kotlin libraries

Then build via

cd libraries
mvn install

Some of the code in the standard library is created by generating code from templates. See the README in the stdlib section for how run the code generator. The existing templates can be used as examples for creating new ones.

Submitting patches

The best way to submit a patch is to fork the project on github then send us a pull request via github.

If you create your own fork, it might help to enable rebase by default when you pull which will avoid your local repo having too many merge commits which will help keep your pull request simple and easy to apply.

Commit comments

If you include in your comment this text (where KT-1234 is the Issue ID in the Issue Tracker, the issue will get automatically marked as fixed.

#KT-1234 Fixed
Something went wrong with that request. Please try again.