[Spec tests] Add prefix increment expression codegen tests

This commit is contained in:
anastasiia.spaseeva
2019-12-04 16:58:18 +03:00
parent 86d072e3aa
commit 6accbf6284
17 changed files with 760 additions and 6 deletions
@@ -72,7 +72,7 @@
},
{
"specVersion": "0.1-213",
"casesNumber": 1,
"casesNumber": 2,
"description": "Abstract classes may contain one or more abstract members, which should be implemented in a subtype of this abstract class",
"unexpectedBehaviour": false
},
@@ -0,0 +1,44 @@
// !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-213
* PLACE: expressions, prefix-expressions, prefix-increment-expression -> paragraph 4 -> sentence 1
* RELEVANT PLACES: statements, assignments -> paragraph 3 -> sentence 2
* NUMBER:1
* DESCRIPTION: check unsafe prefix increment expression call for an assignable expression
*/
class A() {
var i = 0
operator fun inc(): A {
this.i++
return this
}
}
// TESTCASE NUMBER: 1
fun case1() {
var b: Case1? = Case1()
<!UNSAFE_CALL!>++<!>b?.a
}
class Case1() {
var a: A = A()
}
// TESTCASE NUMBER: 2
fun case2() {
var b= Case2()
++<!VAL_REASSIGNMENT!>b.a<!>
}
class Case2() {
val a = A()
}
@@ -0,0 +1,47 @@
// !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-213
* PLACE: expressions, prefix-expressions, prefix-increment-expression -> paragraph 5 -> sentence 2
* NUMBER: 1
* DESCRIPTION: check as the result of inc is assigned to A, the return type of inc must be a subtype of A.
*/
// TESTCASE NUMBER: 1
fun case1() {
var a = Case1()
val res: Any? = <!RESULT_TYPE_MISMATCH!>++<!>a
}
class Case1() {
<!INAPPLICABLE_OPERATOR_MODIFIER!>operator<!> fun inc(): B {
TODO()
}
}
class B() {}
// TESTCASE NUMBER: 2
fun case2() {
var a = Case2()
val res: Any? = <!RESULT_TYPE_MISMATCH!>++<!>a
}
class Case2() : C() {
var i = 0
<!INAPPLICABLE_OPERATOR_MODIFIER!>operator<!> fun inc(): C {
TODO()
}
}
open class C() {}
@@ -0,0 +1,26 @@
{
"4": {
"neg": {
"1": [
{
"specVersion": "0.1-213",
"casesNumber": 2,
"description": "check unsafe prefix increment expression call for an assignable expression",
"unexpectedBehaviour": false
}
]
}
},
"5": {
"neg": {
"2": [
{
"specVersion": "0.1-213",
"casesNumber": 2,
"description": "check as the result of inc is assigned to A, the return type of inc must be a subtype of A.",
"unexpectedBehaviour": false
}
]
}
}
}
@@ -0,0 +1,15 @@
{
"7": {
"neg": {
"1": [
{
"specVersion": "0.1-213",
"casesNumber": 2,
"description": "Abstract classes may contain one or more abstract members, which should be implemented in a subtype of this abstract class",
"path": "compiler/tests-spec/testData/diagnostics/linked/declarations/classifier-declaration/class-declaration/abstract-classes/p-2/neg/1.8.kt",
"unexpectedBehaviour": false
}
]
}
}
}
@@ -0,0 +1,15 @@
{
"3": {
"neg": {
"2": [
{
"specVersion": "0.1-213",
"casesNumber": 2,
"description": "check unsafe prefix increment expression call for an assignable expression",
"path": "compiler/tests-spec/testData/diagnostics/linked/expressions/prefix-expressions/prefix-increment-expression/p-4/neg/1.1.kt",
"unexpectedBehaviour": false
}
]
}
}
}