From dd4cc1686dbbde20f16fb70990912061249f19d4 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 29 Nov 2011 22:11:42 +0300 Subject: [PATCH] Tests for recently fixed bugs --- .../checkerWithErrorTypes/quick/regressions/kt174.jet | 8 ++++++++ .../checkerWithErrorTypes/quick/regressions/kt201.jet | 9 +++++++++ .../checkerWithErrorTypes/quick/regressions/kt312.jet | 10 ++++++++++ 3 files changed, 27 insertions(+) create mode 100644 compiler/testData/checkerWithErrorTypes/quick/regressions/kt174.jet create mode 100644 compiler/testData/checkerWithErrorTypes/quick/regressions/kt201.jet create mode 100644 compiler/testData/checkerWithErrorTypes/quick/regressions/kt312.jet diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt174.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt174.jet new file mode 100644 index 00000000000..ea04148db1b --- /dev/null +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt174.jet @@ -0,0 +1,8 @@ +// KT-174 Nullability info for extension function receivers +// +JDK +trait Tree {} + +fun Any?.TreeValue() : Tree { + if (this is Tree) return this + throw Exception() +} diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt201.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt201.jet new file mode 100644 index 00000000000..4791e550b3e --- /dev/null +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt201.jet @@ -0,0 +1,9 @@ +// KT-201 Allow to call extension with nullable receiver with a '.' +// +JDK + +fun T?.npe() : T = if (this == null) throw NullPointerException() else this + +fun foo() { + val i : Int? = 1 + i.npe() // error! +} \ No newline at end of file diff --git a/compiler/testData/checkerWithErrorTypes/quick/regressions/kt312.jet b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt312.jet new file mode 100644 index 00000000000..6701b24dbef --- /dev/null +++ b/compiler/testData/checkerWithErrorTypes/quick/regressions/kt312.jet @@ -0,0 +1,10 @@ +// KT-312 Nullability problem when a nullable version of a generic type is returned + +fun Array.safeGet(index : Int) : T? { + return if (index < size) this[index] else null +} + +val args : Array = Array(1) +val name : String = args.safeGet(0) // No error, must be type mismatch +val name1 : String? = args.safeGet(0) +