[Spec tests] Add tests for try-expression (paragraphs 1, 2, 5-9)

This commit is contained in:
anastasiia.spaseeva
2019-12-13 15:59:33 +03:00
parent 3aa3f0c50c
commit e865327386
32 changed files with 1876 additions and 0 deletions
@@ -0,0 +1,35 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-218
* PLACE:expressions, try-expression -> paragraph 1 -> sentence 1
* RELEVANT PLACES: expressions, try-expression -> paragraph 1 -> sentence 2
* NUMBER: 1
* DESCRIPTION: try-expression has to start with a try body
*/
fun throwException(): Nothing = throw Exception()
// TESTCASE NUMBER: 1
fun case1() {
try <!SYNTAX!><!>throwException()
}<!SYNTAX!><!>
// TESTCASE NUMBER: 2
fun case2() {
try <!SYNTAX!><!SYNTAX!><!>=<!> throwException()
}<!SYNTAX!><!>
// TESTCASE NUMBER: 3
fun case3() {
try
<!SYNTAX!><!>val a = ""
}<!SYNTAX!><!>
@@ -0,0 +1,75 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-218
* PLACE: expressions, try-expression -> paragraph 1 -> sentence 3
* RELEVANT PLACES: expressions, try-expression -> paragraph 1 -> sentence 2
* NUMBER: 1
* DESCRIPTION: try-expression has to start with a try body and continue with zero ore more catch blocks
*/
fun throwException(): Nothing = throw Exception()
class ExcA() : Exception()
class ExcB() : Exception()
// TESTCASE NUMBER: 1
fun case1() {
try <!SYNTAX!><!>val a = ""
<!UNRESOLVED_REFERENCE!>catch<!>(<!UNRESOLVED_REFERENCE!>e<!><!SYNTAX!>: Exception<!>) {}
}<!SYNTAX!><!>
// TESTCASE NUMBER: 2
fun case2() {
try {
val a = ""
} catch (e: Exception)<!SYNTAX!><!>
}
// TESTCASE NUMBER: 3
fun case3() {
try {
val a = ""
throwException()
} catch (e: java.lang.IllegalArgumentException) {
} catch (e: ExcB)<!SYNTAX!><!>
}
// TESTCASE NUMBER: 4
fun case4() {
try {
throwException()
} catch (<!SYNTAX!><!>) {
}
}
// TESTCASE NUMBER: 5
fun case5() {
try {
throwException()
} catch (e: ExcA, <!SYNTAX!>e2<!><!SYNTAX!><!> <!SYNTAX!>: ExcB)<!>
<!UNUSED_LAMBDA_EXPRESSION!>{}<!>
}
// TESTCASE NUMBER: 6
fun case6() {
try {
val a = ""
throwException()
} catch (e: java.lang.IllegalArgumentException) {
} catch (e: ExcA)<!SYNTAX!><!>
catch (e: ExcB) {
}
}
@@ -0,0 +1,79 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-218
* PLACE: expressions, try-expression -> paragraph 1 -> sentence 4
* RELEVANT PLACES: expressions, try-expression -> paragraph 1 -> sentence 2
* NUMBER: 1
* DESCRIPTION: try-expression has to start with a try body, catch blocks and finally block
*/
fun throwException(): Nothing = throw Exception()
class ExcA() : Exception()
class ExcB() : Exception()
// TESTCASE NUMBER: 1
fun case1() {
try {
throwException()
} catch (e: ExcA) {
} finally {
} <!UNRESOLVED_REFERENCE!>catch<!> (<!UNRESOLVED_REFERENCE!>e<!><!SYNTAX!><!SYNTAX!><!>: ExcB)<!> <!UNUSED_LAMBDA_EXPRESSION!>{
}<!>
}
// TESTCASE NUMBER: 2
fun case2() {
try {
throwException()
} catch (e: ExcB) {
} finally
<!SYNTAX!><!>}<!SYNTAX!><!>
// TESTCASE NUMBER: 3
fun case3() {
try {
throwException()
} finally
<!SYNTAX!><!>}<!SYNTAX!><!>
@@ -0,0 +1,31 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (NEGATIVE)
*
* SPEC VERSION: 0.1-218
* PLACE: expressions, try-expression -> paragraph 1 -> sentence 5
* RELEVANT PLACES: expressions, try-expression -> paragraph 1 -> sentence 2
* NUMBER: 1
* DESCRIPTION: A valid try-expression must have at least one catch or finally block.
*/
fun throwException(): Nothing = throw Exception()
// TESTCASE NUMBER: 1
fun case1() {
try {
throwException()
}<!SYNTAX!><!>
}
// TESTCASE NUMBER: 2
fun case2() {
try {
val a = "foo"
}<!SYNTAX!><!>
}
@@ -0,0 +1,36 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-218
* PLACE:expressions, try-expression -> paragraph 1 -> sentence 1
* RELEVANT PLACES: expressions, try-expression -> paragraph 1 -> sentence 2
* expressions, try-expression -> paragraph 1 -> sentence 5
* NUMBER: 1
* DESCRIPTION: try-expression has to start with a try body
*/
fun throwException(): Nothing = throw Exception()
// TESTCASE NUMBER: 1
fun case1() {
try {
throwException()
}finally {
"a"
}
}
// TESTCASE NUMBER: 2
fun case2() {
try {
<!UNREACHABLE_CODE!>val a =<!> throwException()
}catch (e: Exception) {
"a"
}
}
@@ -0,0 +1,38 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-218
* PLACE: expressions, try-expression -> paragraph 1 -> sentence 3
* RELEVANT PLACES: expressions, try-expression -> paragraph 1 -> sentence 2
* NUMBER: 1
* DESCRIPTION: try-expression has to start with a try body and continue with zero ore more catch blocks
*/
fun throwException(): Nothing = throw Exception()
// TESTCASE NUMBER: 1
fun case1() {
try {
val a = ""
} catch (e: Exception) {
}
}
// TESTCASE NUMBER: 2
fun case2() {
try {
val a = ""
throwException()
} catch (e: IllegalArgumentException) {
} catch (e: ExcA) {
} catch (e: ExcB) {
}
}
class ExcA() : Exception()
class ExcB() : Exception()
@@ -0,0 +1,61 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-218
* PLACE: expressions, try-expression -> paragraph 1 -> sentence 3
* RELEVANT PLACES: expressions, try-expression -> paragraph 1 -> sentence 2
* NUMBER: 2
* DESCRIPTION: catch is a soft keyword
*/
fun throwException(): Nothing = throw Exception()
// TESTCASE NUMBER: 1
class Case1 {
fun catch(e: Exception) {}
fun case1() {
catch(Exception())
}
}
// TESTCASE NUMBER: 2
class Case2 {
class catch(e: Exception) {}
fun case2() {
val c = catch(Exception())
}
}
// TESTCASE NUMBER: 3
class Case3 {
fun catch() {}
fun case3() {
catch()
}
}
// TESTCASE NUMBER: 4
class Case4 {
class catch() {}
fun case4() {
val c = catch()
}
}
// TESTCASE NUMBER: 5
class Case5() {
interface catch
fun case5(){
val c = object :catch{}
}
}
@@ -0,0 +1,36 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-218
* PLACE: expressions, try-expression -> paragraph 1 -> sentence 4
* RELEVANT PLACES: expressions, try-expression -> paragraph 1 -> sentence 2
* NUMBER: 1
* DESCRIPTION: try-expression has to start with a try body, catch blocks and finally block
*/
fun throwException(): Nothing = throw Exception()
class ExcA() : Exception()
class ExcB() : Exception()
// TESTCASE NUMBER: 1
fun case1() {
try {
throwException()
} catch (e: ExcA) {
} catch (e: ExcB) {
} finally {
}
}
// TESTCASE NUMBER: 2
fun case2() {
try {
throwException()
} finally {
}
}
@@ -0,0 +1,61 @@
// !LANGUAGE: +NewInference
// !DIAGNOSTICS: -UNUSED_VARIABLE -ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE -UNUSED_VALUE -UNUSED_PARAMETER -UNUSED_EXPRESSION
// SKIP_TXT
/*
* KOTLIN DIAGNOSTICS SPEC TEST (POSITIVE)
*
* SPEC VERSION: 0.1-218
* PLACE: expressions, try-expression -> paragraph 1 -> sentence 4
* RELEVANT PLACES: expressions, try-expression -> paragraph 1 -> sentence 2
* NUMBER: 2
* DESCRIPTION: finally is a soft keyword
*/
fun throwException(): Nothing = throw Exception()
// TESTCASE NUMBER: 1
class Case1 {
fun finally(e: Exception) {}
fun case1() {
finally(Exception())
}
}
// TESTCASE NUMBER: 2
class Case2 {
class finally(e: Exception) {}
fun case2() {
val c = finally(java.lang.Exception())
}
}
// TESTCASE NUMBER: 3
class Case3 {
fun finally() {}
fun case3() {
finally()
}
}
// TESTCASE NUMBER: 4
class Case4 {
class finally() {}
fun case4() {
val c = finally()
}
}
// TESTCASE NUMBER: 5
class Case5() {
interface finally
fun case5(){
val c = object :finally{}
}
}