[FIR] Implement INCORRECT_CHARACTER_LITERAL, EMPTY_CHARACTER_LITERAL, TOO_MANY_CHARACTERS_IN_CHARACTER_LITERAL, ILLEGAL_ESCAPE, ILLEGAL_ESCAPE_SEQUENCE diagnostics, fix tests

This commit is contained in:
Ivan Kochurkin
2021-04-06 15:11:31 +03:00
committed by TeamCityServer
parent 91d42fe345
commit 404c69ded7
17 changed files with 181 additions and 70 deletions
@@ -1,13 +1,13 @@
fun test(c : Char) {
test(<!ILLEGAL_CONST_EXPRESSION!>''<!>)
test(<!EMPTY_CHARACTER_LITERAL!>''<!>)
test('a')
test(<!ILLEGAL_CONST_EXPRESSION!>'aa'<!>)
test(<!ILLEGAL_CONST_EXPRESSION!>'a)<!>
<!UNRESOLVED_REFERENCE!>test<!>(<!ILLEGAL_CONST_EXPRESSION!>'<!>
<!UNRESOLVED_REFERENCE!>test<!>(0<!ILLEGAL_CONST_EXPRESSION!><!SYNTAX!><!>'<!>
test(<!TOO_MANY_CHARACTERS_IN_CHARACTER_LITERAL!>'aa'<!>)
test(<!INCORRECT_CHARACTER_LITERAL!>'a)<!>
<!UNRESOLVED_REFERENCE!>test<!>(<!INCORRECT_CHARACTER_LITERAL!>'<!>
<!UNRESOLVED_REFERENCE!>test<!>(0<!INCORRECT_CHARACTER_LITERAL!><!SYNTAX!><!>'<!>
<!UNRESOLVED_REFERENCE!>test<!>('\n')
test('\\')
test(<!ILLEGAL_CONST_EXPRESSION!>''<!><!ILLEGAL_CONST_EXPRESSION, TOO_MANY_ARGUMENTS!><!SYNTAX!><!>''<!>)
test(<!EMPTY_CHARACTER_LITERAL!>''<!><!EMPTY_CHARACTER_LITERAL, TOO_MANY_ARGUMENTS!><!SYNTAX!><!>''<!>)
test('\'')
test('\"')
}
@@ -2,11 +2,11 @@
// KT-451 Incorrect character literals cause assertion failures
fun ff() {
val b = <!ILLEGAL_CONST_EXPRESSION!>''<!>
val c = <!ILLEGAL_CONST_EXPRESSION!>'23'<!>
val d = <!ILLEGAL_CONST_EXPRESSION!>'a<!>
val e = <!ILLEGAL_CONST_EXPRESSION!>'ab<!>
val f = <!ILLEGAL_CONST_EXPRESSION!>'\'<!>
val b = <!EMPTY_CHARACTER_LITERAL!>''<!>
val c = <!TOO_MANY_CHARACTERS_IN_CHARACTER_LITERAL!>'23'<!>
val d = <!INCORRECT_CHARACTER_LITERAL!>'a<!>
val e = <!INCORRECT_CHARACTER_LITERAL!>'ab<!>
val f = <!ILLEGAL_ESCAPE!>'\'<!>
}
fun test() {
@@ -19,19 +19,19 @@ fun test() {
'\''
'\\'
'\$'
<!ILLEGAL_CONST_EXPRESSION!>'\x'<!>
<!ILLEGAL_CONST_EXPRESSION!>'\123'<!>
<!ILLEGAL_CONST_EXPRESSION!>'\ra'<!>
<!ILLEGAL_CONST_EXPRESSION!>'\000'<!>
<!ILLEGAL_CONST_EXPRESSION!>'\000'<!>
<!ILLEGAL_ESCAPE!>'\x'<!>
<!ILLEGAL_ESCAPE!>'\123'<!>
<!ILLEGAL_ESCAPE!>'\ra'<!>
<!ILLEGAL_ESCAPE!>'\000'<!>
<!ILLEGAL_ESCAPE!>'\000'<!>
'\u0000'
'\u000a'
'\u000A'
<!ILLEGAL_CONST_EXPRESSION!>'\u'<!>
<!ILLEGAL_CONST_EXPRESSION!>'\u0'<!>
<!ILLEGAL_CONST_EXPRESSION!>'\u00'<!>
<!ILLEGAL_CONST_EXPRESSION!>'\u000'<!>
<!ILLEGAL_CONST_EXPRESSION!>'\u000z'<!>
<!ILLEGAL_CONST_EXPRESSION!>'\\u000'<!>
<!ILLEGAL_CONST_EXPRESSION!>'\'<!>
<!ILLEGAL_ESCAPE!>'\u'<!>
<!ILLEGAL_ESCAPE!>'\u0'<!>
<!ILLEGAL_ESCAPE!>'\u00'<!>
<!ILLEGAL_ESCAPE!>'\u000'<!>
<!ILLEGAL_ESCAPE!>'\u000z'<!>
<!ILLEGAL_ESCAPE!>'\\u000'<!>
<!ILLEGAL_ESCAPE!>'\'<!>
}
@@ -11,7 +11,7 @@ fun test(a: Any) {
a foo"asd${a}sfsa"
a foo"""sdf"""
a foo'd'
a foo<!ILLEGAL_CONST_EXPRESSION!>''<!>
a foo<!EMPTY_CHARACTER_LITERAL!>''<!>
a foo""foo a
a foo"asd"foo a
@@ -19,17 +19,17 @@ fun test(a: Any) {
a foo"asd${a}sfsa"foo a
a foo"""sdf"""foo a
a foo'd'foo a
a foo<!ILLEGAL_CONST_EXPRESSION!>''<!>foo a
a foo<!EMPTY_CHARACTER_LITERAL!>''<!>foo a
a in"foo"
a in"""foo"""
a in's'
a in<!ILLEGAL_CONST_EXPRESSION!>''<!>
a in<!EMPTY_CHARACTER_LITERAL!>''<!>
a !in"foo"
a !in"""foo"""
a !in's'
a !in<!ILLEGAL_CONST_EXPRESSION!>''<!>
a !in<!EMPTY_CHARACTER_LITERAL!>''<!>
if("s"is Any) {}
if("s"is Any) {}
@@ -37,4 +37,4 @@ fun test(a: Any) {
a foo""<!SYNTAX!>1<!>
a foo""<!SYNTAX!>1.0<!>
}
}
@@ -9,7 +9,7 @@ annotation class Foo(
annotation class Bar(
val a: Array<String> = [' '],
val b: Array<String> = ["", <!ILLEGAL_CONST_EXPRESSION!>''<!>],
val b: Array<String> = ["", <!EMPTY_CHARACTER_LITERAL!>''<!>],
val c: Array<String> = [1]
)