Java 8 rules for method overrides:
- report errors on implementing methods of Any in interfaces - update testData ~~~ Java 8 override restrictions: interface can't implement a method of 'Any' - update compiler sources
This commit is contained in:
@@ -40,7 +40,9 @@ interface CallInfo {
|
||||
val extensionReceiver: JsExpression?
|
||||
|
||||
fun constructSafeCallIsNeeded(result: JsExpression): JsExpression
|
||||
}
|
||||
|
||||
abstract class AbstractCallInfo : CallInfo {
|
||||
override fun toString(): String {
|
||||
val location = DiagnosticUtils.atLocation(callableDescriptor)
|
||||
val name = callableDescriptor.getName().asString()
|
||||
@@ -49,9 +51,9 @@ interface CallInfo {
|
||||
}
|
||||
|
||||
// if value == null, it is get access
|
||||
class VariableAccessInfo(callInfo: CallInfo, val value: JsExpression? = null) : CallInfo by callInfo
|
||||
class VariableAccessInfo(callInfo: CallInfo, val value: JsExpression? = null) : AbstractCallInfo(), CallInfo by callInfo
|
||||
|
||||
class FunctionCallInfo(callInfo: CallInfo, val argumentsInfo: CallArgumentTranslator.ArgumentsInfo) : CallInfo by callInfo
|
||||
class FunctionCallInfo(callInfo: CallInfo, val argumentsInfo: CallArgumentTranslator.ArgumentsInfo) : AbstractCallInfo(), CallInfo by callInfo
|
||||
|
||||
/**
|
||||
* no receivers - extensionOrDispatchReceiver = null, extensionReceiver = null
|
||||
@@ -146,7 +148,7 @@ private fun TranslationContext.createCallInfo(resolvedCall: ResolvedCall<out Cal
|
||||
}
|
||||
}
|
||||
}
|
||||
return object : CallInfo {
|
||||
return object : AbstractCallInfo(), CallInfo {
|
||||
override val context: TranslationContext = this@createCallInfo
|
||||
override val resolvedCall: ResolvedCall<out CallableDescriptor> = resolvedCall
|
||||
override val dispatchReceiver: JsExpression? = dispatchReceiver
|
||||
|
||||
@@ -8,8 +8,8 @@ package foo
|
||||
import java.util.ArrayList
|
||||
import java.util.HashMap
|
||||
|
||||
interface Element {
|
||||
fun render(builder: StringBuilder, indent: String)
|
||||
abstract class Element {
|
||||
abstract fun render(builder: StringBuilder, indent: String)
|
||||
|
||||
override fun toString(): String {
|
||||
val builder = StringBuilder()
|
||||
@@ -18,13 +18,13 @@ interface Element {
|
||||
}
|
||||
}
|
||||
|
||||
class TextElement(val text: String) : Element {
|
||||
class TextElement(val text: String) : Element() {
|
||||
override fun render(builder: StringBuilder, indent: String) {
|
||||
builder.append("$indent$text\n")
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Tag(val name: String) : Element {
|
||||
abstract class Tag(val name: String) : Element() {
|
||||
val children = ArrayList<Element>()
|
||||
val attributes = HashMap<String, String>()
|
||||
|
||||
|
||||
+4
-4
@@ -8,8 +8,8 @@ package foo
|
||||
import java.util.ArrayList
|
||||
import java.util.HashMap
|
||||
|
||||
interface Element {
|
||||
fun render(builder: StringBuilder, indent: String)
|
||||
abstract class Element {
|
||||
abstract fun render(builder: StringBuilder, indent: String)
|
||||
|
||||
override fun toString(): String {
|
||||
val builder = StringBuilder()
|
||||
@@ -18,13 +18,13 @@ interface Element {
|
||||
}
|
||||
}
|
||||
|
||||
class TextElement(val text: String) : Element {
|
||||
class TextElement(val text: String) : Element() {
|
||||
override fun render(builder: StringBuilder, indent: String) {
|
||||
builder.append("$indent$text\n")
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Tag(val name: String) : Element {
|
||||
abstract class Tag(val name: String) : Element() {
|
||||
val children = ArrayList<Element>()
|
||||
val attributes = HashMap<String, String>()
|
||||
|
||||
|
||||
@@ -45,8 +45,8 @@ fun main(args: Array<String>) {
|
||||
println(result)
|
||||
}
|
||||
|
||||
interface Element {
|
||||
fun render(builder: StringBuilder, indent: String)
|
||||
abstract class Element {
|
||||
abstract fun render(builder: StringBuilder, indent: String)
|
||||
|
||||
override fun toString(): String {
|
||||
val builder = StringBuilder()
|
||||
@@ -55,13 +55,13 @@ interface Element {
|
||||
}
|
||||
}
|
||||
|
||||
class TextElement(val text: String) : Element {
|
||||
class TextElement(val text: String) : Element() {
|
||||
override fun render(builder: StringBuilder, indent: String) {
|
||||
builder.append("$indent$text\n")
|
||||
}
|
||||
}
|
||||
|
||||
abstract class Tag(val name: String) : Element {
|
||||
abstract class Tag(val name: String) : Element() {
|
||||
val children = ArrayList<Element>()
|
||||
val attributes = HashMap<String, String>()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user