================== Classes ================== class Empty class Empty2 {} --- (source_file (class_declaration (type_identifier)) (class_declaration (type_identifier) (class_body))) ================== Class with methods ================== class HelloWorld { fun a() {} fun b() {} } --- (source_file (class_declaration (type_identifier) (class_body (function_declaration (simple_identifier) (function_body)) (function_declaration (simple_identifier) (function_body))))) ================== Generic class ================== class Container {} --- (source_file (class_declaration (type_identifier) (type_parameters (type_parameter (type_identifier))) (class_body))) ================== Class with methods and expressions ================== class Strings { fun aString() = "Hello World!" fun anotherString() = "Hello" + " " + "World" } --- (source_file (class_declaration (type_identifier) (class_body (function_declaration (simple_identifier) (function_body (line_string_literal))) (function_declaration (simple_identifier) (function_body (additive_expression (additive_expression (line_string_literal) (line_string_literal)) (line_string_literal))))))) ================== Class with modifiers ================== internal open class Test { private abstract inline fun test() } --- (source_file (class_declaration (modifiers (visibility_modifier) (inheritance_modifier)) (type_identifier) (class_body (function_declaration (modifiers (visibility_modifier) (inheritance_modifier) (function_modifier)) (simple_identifier))))) ================== Objects ================== object Singleton { fun test() } --- (source_file (object_declaration (type_identifier) (class_body (function_declaration (simple_identifier))))) ================== Primary constructors ================== data class Vector2D( val x: Int, val y: Int ) --- (source_file (class_declaration (modifiers (class_modifier)) (type_identifier) (primary_constructor (class_parameter (simple_identifier) (user_type (type_identifier))) (class_parameter (simple_identifier) (user_type (type_identifier)))))) ================== Inheritance ================== class A : B() {} class C(param: Int) : D(param) class D : SomeInterface --- (source_file (class_declaration (type_identifier) (delegation_specifier (constructor_invocation (user_type (type_identifier)) (value_arguments))) (class_body)) (class_declaration (type_identifier) (primary_constructor (class_parameter (simple_identifier) (user_type (type_identifier)))) (delegation_specifier (constructor_invocation (user_type (type_identifier)) (value_arguments (value_argument (simple_identifier)))))) (class_declaration (type_identifier) (delegation_specifier (user_type (type_identifier))))) ================== Properties ================== class Something { val x: Int = 4 var y: Int? val z: Int get() = x } --- (source_file (class_declaration (type_identifier) (class_body (property_declaration (variable_declaration (simple_identifier) (user_type (type_identifier))) (integer_literal)) (property_declaration (variable_declaration (simple_identifier) (nullable_type (user_type (type_identifier))))) (property_declaration (variable_declaration (simple_identifier) (user_type (type_identifier))) (getter (function_body (simple_identifier))))))) ================== Constructor delegation calls ================== class Test(x: Int, y: Int) { constructor() : this(0, 0) } --- (source_file (class_declaration (type_identifier) (primary_constructor (class_parameter (simple_identifier) (user_type (type_identifier))) (class_parameter (simple_identifier) (user_type (type_identifier)))) (class_body (secondary_constructor (constructor_delegation_call (value_arguments (value_argument (integer_literal)) (value_argument (integer_literal)))))))) ================== Enum classes ================== enum class Suit { DIAMONDS, CLOVERS, HEARTS, SPADES } enum class Color(val rgb: Int) { RED(0xFF0000), GREEN(0x00FF00), BLUE(0x0000FF); override fun toString() = rgb.toString(16) } --- (source_file (class_declaration (type_identifier) (enum_class_body (enum_entry (simple_identifier)) (enum_entry (simple_identifier)) (enum_entry (simple_identifier)) (enum_entry (simple_identifier)))) (class_declaration (type_identifier) (primary_constructor (class_parameter (simple_identifier) (user_type (type_identifier)))) (enum_class_body (enum_entry (simple_identifier) (value_arguments (value_argument (hex_literal)))) (enum_entry (simple_identifier) (value_arguments (value_argument (hex_literal)))) (enum_entry (simple_identifier) (value_arguments (value_argument (hex_literal)))) (function_declaration (modifiers (member_modifier)) (simple_identifier) (function_body (call_expression (navigation_expression (simple_identifier) (navigation_suffix (simple_identifier))) (call_suffix (value_arguments (value_argument (integer_literal))))))))))