Refactoring: AbstractResolvedCallsTest

Render resolved call to a separate file
This commit is contained in:
Svetlana Isakova
2014-05-30 09:59:44 +04:00
parent b2c2e1811c
commit 29ab166e1b
77 changed files with 770 additions and 208 deletions
@@ -0,0 +1,48 @@
// !CALL: +
trait Element {
fun render(builder: StringBuilder, indent: String)
}
class TextElement(val text: String): Element {
override fun render(builder: StringBuilder, indent: String): Unit = fail
}
abstract class Tag(val name: String): Element {
protected fun initTag<T: Element>(tag: T, init: T.() -> Unit): T = fail
override fun render(builder: StringBuilder, indent: String): Unit = fail
}
abstract class TagWithText(name: String): Tag(name) {
fun String.plus() {}
}
class HTML(): TagWithText("html") {
fun head(init: Head.() -> Unit): Head = fail
}
class Head(): TagWithText("head") {
fun title(init: Title.() -> Unit): Title = fail
}
class Title(): TagWithText("title")
fun html(init: HTML.() -> Unit): HTML = fail
fun result() =
html {
head {
title {+"Foo"}
}
}
val fail: Nothing get() = throw Exception()
Resolved call:
Explicit receiver kind = RECEIVER_ARGUMENT
This object = Title
Receiver argument = "Foo"